読者です 読者をやめる 読者になる 読者になる

/home/by-natures/dev*

ソフトウェア開発者として働く人の技術的なメモ

機械学習勉強会 #2

機械学習勉強会の第2回を実施しましたので、その様子をお伝えします。

第1回の様子はこちらをどうぞ。

この勉強会は、「機械学習について学ぶきっかけをつくってもらう」ことが目的です。新しいことを学ぶモチベーションを維持するための仕組みとして、月に1回開催するこの勉強会を、みなさんの生活の中に取り入れてもらえたらと思っています。

また、社外の人とコミュニケーションを図ることで、みなさんの業務のモチベーションアップに繋がればと考えています。社外の人とコミュニケーションを取ることで、会社内で閉じていた情報を交換し合ったり、様々なバックグラウンドをもつ方と話をすることで、気付きを得ることが社外勉強会のもう一つの目的です。そのため、懇親会への参加もできる限りお願いしています。

社会人だけでなく、学生の方(主に修士や博士の方)も来てくださっていて、アカデミックな雰囲気もあります。これは運営メンバーに株式会社アカリクさんの方がいる影響なのですが、他の勉強会とはちょっと違った面白いポイントだと思います。

ご興味ある方は Google+ コミュニティ へご参加・ご連絡ください!

[toc]

第2回の内容

第1回はチーム分けとチーム作業のみを行いましたが、「興味はあるけれど触ったことがない」という方が多いことが分かりましたので、機械学習に関する導入を促そうと、第2回ではセミナーを設けました。

セミナー

DSC_0008

セミナーでは、仕事で日常的に機械学習技術を利用されている方や、大学院で研究されていた方など、詳しい方からの丁寧な解説が行われました。資料はすべて Google+ コミュニティ に上がっていますので、こちらもぜひご覧ください。

Scikit-learnで学ぶ機械学習入門 / 佐藤 貴海さん

佐藤さんは scikit-learn という Python機械学習ライブラリを題材に、分析を行う手順を1から解説してくださいました。この資料を読めば、環境構築から一通りの機械学習についての用語が学べます。

特に、佐藤さんの経験から、それぞれの手法についての良い点・悪い点が簡潔にまとめられているのが分かりやすいと感じました。手法選択が大切だと発表中に説明されており、これには経験を詰み、更には(恐らくビジネスとしての時間制約として)運も絡んでくるということでした。

scikit-learn のチュートリアル"Choosing the right estimator" というページがあり、扱うデータ等によってどのような手法を選べば良いかのフローチャートが掲載されています。これから分析を始める方は一度ご覧になってはいかがでしょうか。

機械学習によるセンシングデータの異常検知 / 滝 勇太さん

滝さんが仕事で携わっているセンシングデータに関する機械学習手法を、初心者の方向けに丁寧に解説してくださいました。

センシングデータという一つの題材に対して、分類・回帰・次元削減の3つの方法で異常値を探る説明がとても分かりやすいです。私も学生のころにこれらの手法については理論を学んだことがありましたが、実際にどう利用しているかを知ることができました。

滝さんは、前処理がとにかく大切、とも説いていました。各チームの作業では、輪読会やコンペへの参加などが検討されており、整備されたデータを扱うことになるかと思いますが、実業務では前処理をどのように行うかというノウハウを別途学ぶ必要がありそうです。

Parsing The Web with Deep Learning / 久本 空海さん

時間が余ってしまったので野良発表を募集したところ、久本さんが以前、楽天研究所でお話された Deep Learning のお話をしていただけることになりました。発表スライドが Speaker Deck に上がっていますので、こちらに掲載致します。

Deep Learning の話が急遽聞けるなんて!と会場は沸き上がっていました。特に自然言語に対する意味付けが教師なし学習で行える…という話題は非常に興味深かったです。King - Man + Woman = Queen になる、といった具合です。これで相対的に十分理解できる概念は満足できそうですが、絶対的な意味付けが必要なコーパス(基底ベクトル?)はどの程度の大きさなのかちょっと気になりました。

チーム作業における GitHubGoogle+ のススメ

こちらは私が発表しました。それなりの見出しを付けましたが、業務多忙につき当日スライドを準備せざるを得なくなり、高橋メソッドで資料を作りました。。高橋メソッドを使うのは初めてだったのですが、余計なことを考えなくて済む分、発表も非常にスムーズでした。

第1回で、どのようにチーム作業を進めていったらよいかというご相談が多かったり、戸惑っている方が多いと感じましたので、ソースコードを通じたコミュニケーションツールである GitHub と、運営側で用意した Google+ の使い方について紹介を行いました。

特に GitHub は、チーム作業時間にアカウント開設し、初期設定をされている方も多くいました。勉強のために書いたソースコードGitHub に上げておくだけで、いつでも他の人にソースコードを見せられる状態になるので、仮に同じリポジトリで作業しなくとも便利だと思います。

チームごとの作業

チームごとの作業の様子

勉強会の後半は、各チームで決めた方針に従って会場で用意した2時間を好きに使うという、自由度が高い時間です。(こちらがメインです)

今回は3分の1の方が初参加でしたので、チーム分けの趣旨などを運営から説明しました。そして既存チームが、初参加の方に、自分のチームへ来て欲しいというアピールをしました。

今の所は5つのチームに別れており、それぞれ次のような趣旨をもっています:

  • 機械学習の技術を使い、Webサービスを作る
  • 本の輪読を勉強会の中で行い、分析コンペへの出場を目指す
  • 各自がそれぞれの目標を立て、チーム内で宣言することで、この勉強会をマイルストンとして利用する
  • 機械学習が何なのかがまだ分からないため、この時間を使ってWeb上の情報から知識を得る

最初は似通った目標になるかなと思ったのですが、第2回でチームごとの色がハッキリ出てきました。時間中に書籍についての議論をしたり、GitHubリポジトリ環境の共有を行うなど、チームごとに作業はバラバラで、運営としては見ていてとても楽しかったです。

ただここで目標を立てても、普段はそれぞれの業務や研究があり、どれだけ時間を割けるかは分かりません。この勉強会はもちろん任意参加なので、それぞれが可能な範囲で参加してもらえたらよいので、目標の変更やチームの移動なども適時行い、敷居が高くならないようにしたいです。合わせて、受動的な知識を得る機会としてのセミナーなどを設けることで、気軽に参加していただけるような工夫をしていきたいと思っています。

懇親会

懇親会(2次会)

元々飲み友達だった運営メンバーなので、懇親会も結構気合いを入れています(笑)。今回は「夏なのでビアガーデンに行こう!」というのが趣旨だったのですが、サッポロビールのいろいろな生ビールが楽しめる銀座ライオンさんがお店を貸し切れるとのことだったので、こちらにしました。

2次会は更にビアバーを梯子するというビールづくしの懇親会となりましたが、勉強会参加者の半分以上が懇親会に参加されました。バックグラウンドも様々でしたが、社会人だけでなく、学生の方(主に修士や博士の方)も来ているので、飲みの場でも自然とアカデミックな話題が上がります。私も修士出身なので研究室の話に懐かしさを感じたり、久しぶりに聞く数学の話にちょっと心ときめいたりして、楽しい時間を過ごしました。途中から知人を連れてきてくれる方もいて、時間が立つにつれて懇親会全体が和やかなムードになりました。

 

以上、第2回の内容をお伝えしました。勉強会にご興味ある方は、気兼ねなく Google+ コミュニティ へご参加・ご連絡ください!