torutkのブログ

ソフトウェア・エンジニアのブログ

「Deep Learning Javaプログラミング」を読む会(第1回)開催メモ #javareading

昨日12月17日(土)は、Java読書会BOF 主催のJava読書会開催日でした。今月から次の本を読み始めました。

Deep Learning Javaプログラミング 深層学習の理論と実装 (impress top gear)

Deep Learning Javaプログラミング 深層学習の理論と実装 (impress top gear)

ディープラーニングが今年流行っているので、折あればどんなものなのだろうか説明を聞いてみるとかWebを調べてみるとか、ちょっとした情報収集をしてみました。しかし、いずれも知識が頭には入ってくるに至らず、これは難解な技術なのではと思っていました。

そこに、Java読書会でじっくりディープラーニングの本を読む機会が到来したので、これはチャンスと今回は事前にさらっと読み進めておきました。

第1章は、なぜディープラーニングなの?ということに答えてくれる読み物調の内容だったので割とさらっと読み進めることができました。

ディープラーニングが画期的なのはこれです(p.4から抜粋)。

機械自らが与えられたデータの中から特徴量を見つけ出し、学習する

これを、3つの人工知能ブームの盛衰を交えながらディープラーニングに至る歴史を紹介しています。

  1. 1950年代後半、探索プログラムによる最適解の選択
  2. 1980年代、知識表現(KR:Knowledge Representation)と推論で人間の問いに機械が反応できるようになった
  3. 機械学習データマイニング

機械学習の限界(特徴を見つけ出すのは人間)を超える技術としてディープラーニングが着目されました。
ディープラーニングは、アルゴリズムとしてはニューラルネットワークの応用です。しかし、これまで難しかった深い階層のニューラルネットワークを使えるようにしたことで、ブレークスルーとなりました。

第2章は、機械学習の紹介と、その中でもディープラーニングの基礎となるニューラルネットワークの紹介とJavaによるプログラミングです。

今回の読書会では、第2章の途中、単純なニューラルネットワークパーセプトロン)まで読み進めました。

朝10時から夕方5時まで、実質4時間半(途中、昼食1時間と適宜休憩を挟むので)みっちり読んで、疑問点は議論し尽して理解に努めるので、これまであやふやだった機械学習ディープラーニングについて知識を獲得することができました。

独りで読んだときは、「超平面(hyperplane)」が太字になっていたけどさらっと読み飛ばしていましたが、読書会の場では、ちゃんと何かを議論して理解をすることができました。参加者の中にはさらっと「N次元におけるN-1次元だよ」と言える人がおりました。記号∇も「ナブラ」とすらっと言える人もおり、やはりみんなで読むといいですね。

これが、セミナー形式だと、講師のスピードでガンガン進んでしまい、分かった気にはなるけれど細部は聞きとばし、知識として定着するのはなかなかに難しいところです。

Java読書会のモットーは、「脳みそに汗をかこう」*1ですから、時間はかかるしとても疲れますが、知識の定着はセミナーを受講するよりはるかに濃いです。

次回は1月21日(土)です。

2次会参加できず・・・

仕事の都合で、読書会がおわった夕方から会社に行きました。残念ながら2次会には参加できませんでした。
翌日の日曜日も出勤しました。

仕事は、今はIT関係と言えば言えなくもないですが、ITシステムを構成するのに必要なコンピューターやネットワーク機器、ミドルウェアなどの構成検討と見積資料作成、調達、据付などがミッションで、Excelな世界です。組織の都合で人を割り振るので、今年度はそんな感じです。

せめてプライベートな時間ではプログラミングやソフトウェア開発技術に携わりたく、読書会に参加することだけは確保しました。周囲には迷惑かけているような気もしますが、そこはありがたいと感じています。

そういえば、読書会で、Excelというと「Excel方眼紙?」と聞かれましたが、数量や金額や各種スペックなどの記載なので本来のExcelの使い方に近いし、記載間違いがあると大変なので、間違いの元であるコピペをしなくてもいいようにセル間の連携がガシガシ組まれています。