困ったときのHIKAKINさん風タイトル。便利すぎます。
去る8月30日 19:20分より「DELTA TOKYO #3 〜NeuralNetworkConsoleの面白い使い方を学ぼう〜」が開催されたので参加させて頂きました。
connpassは「IT勉強会支援プラットフォーム」で、だれでもイベント(勉強会)を開催、参加することができます。イベント作成者はイベントを「グループ」分けすることができますが、今回のイベントは「DELTA」グループで開催されました。
今回の勉強会は、3人の方がそれぞれテーマを持ち寄って発表する会でした。私は「ブログ枠」で参加させて頂いたので、このとおり記事にさせて頂いた次第です。
参加するまでは何をテーマにブログを書くか悩んだのですが、発表者3人の方のお話を聞いて、これは少しでも世に広めなければならない!と感じたので、発表内容の要約をご紹介させて頂きます。
Akira (@ImagingSolAkira)さん
DELTA TOKYO #3 〜NeuralNetworkConsoleの
でこんなことやってみた
こんな機能が欲しい
です。使用されたスライドはこちら。
仕事では画像処理系の開発を会社内でほぼ一人でやっているそうです。最初はNNCの機能紹介?かと思ったのですが、その実はC#で自作されたアプリケーションのお話でした。
テーマは3つです。
A.評価結果のビューアを作成
NNCで学習した結果はEVALUTIONタブの「Output Result」で一覧表示できます。しかし評価値(「y’」の値)が低いかつ誤認識した画像を探すには、画像を目視確認していく必要があります。
そのような場合に評価値でソートできれば、評価値が低い画像から確認することができ効率的ですが、NNCの機能ではできません。CSVで出力すればExcel等でソートできますが、出力されるのはファイル名と評価値の一覧なので、実際に誤認識しているかどうかはファイル名から画像を開いて確認しなければいけません。
そこでAkiraさんはC#でビューアソフトを開発。ソートして表示し、さらに評価値を横軸、画像数を縦軸とするヒストグラム表示もできます。より正確に分類されるネットワークモデルを構築するのに役立ちます。
B.重みの可視化
NNCのWindows版では、Convolution関数等の重みを下図のように視覚的に表示することができます。
Affine関数でも表示されますが、1次元配列のため見づらいです。そのAffine関数の重みファイルを読み込んで、下図のように感覚的に分かりやすく表示できるツールです。
ちなみに重みファイルはWindows版NNCで、「TRAINING」タブの学習結果を右クリックし、「Open Result Location」を選択すると結果フォルダが開くので、そこの「net」フォルダ配下にあります。
C.オリジナルの学習データの作成
画像の深層学習を行う際に最も手間がかかるのが、学習データの収集かと思います。このツールでは、カメラで写した画像から、マウスクリックしたポイントを中心に一定の範囲で画像を切り出してくれます。しかも1回の切り出しで、元画像と90°、180°、270°、X軸反転、Y軸反転した画像を出力することができるので、効率的に画像を収集できます。
boku (@arakan_boku)さん
アラカン”BOKU”のITな日常の著者、にこやかでワイルドなbokuさん。発表内容は「女性向けニュースのAI編集長を模擬る」です。使用されたスライドはこちら。githubでもソースコードを公開されています。
ゆくゆくは人の経験と判断が必要となる、適切でない文章の差し戻しなどをAIで判断し、業務効率化を目指しているとのこと。日本語記事が女性向けかどうか?を判断する認識機をNNCで作成し、Excelに文章を貼り付けすると、女性向けかどうかを判断できるツールに仕上がっていました。
実演で日経ウーマンの記事を張り付けるとOK、日経新聞の記事を貼り付けるとNGと判定されていました。一応判定はOKとNGの間もある3段階らしいのですが、今のところ中間が出たことはないそうで、驚きの精度です。
機能を実現する上でのポイントとしては3つ。
A.学習データの処理
NNCで処理する値は-1.0~1.0の数値である必要がありますが、記事データをどのように数値化するかが問題です。単語単位での解析も検討したそうですが、bokuさんが選択したのは文字単位での数値化。文字コード00~FFの範囲の、各文字コードの出現率(記事中のある文字の出現回数/記事の総文字数)をNNCに処理させる形式にしたとのこと。上記処理を行うPythonプログラムも用意されたようです。
※多分こちらのプログラムです。
B.ネットワークモデル
NNCのネットワークモデルのポイントとしては、出現率なので数値が0.0~1.0の範囲になること、記事のようなテキストデータは00~FFの中では偏りが激しくなることに対処するため、Affine+BatchNormalizationで偏りを分散させたのち、Tanhで-1.0~1.0の範囲に整えたそうです。
C.Excelでの評価
記事データをExcel上で入力して評価するために、NNLに付属している「nnabla_cli.exe」を利用して以下の処理を行わせているそうです。
Excelのセルに入力された記事をVBAでテキストファイル化
↓
NNCで読み取れる形式に変換(おそらくAで使ったPythonプログラム)
↓
nnabla_cli.exeで評価し結果をCSVファイル「output_result.csv」に出力
↓
ExcelVBAでoutput_result.csvを読み込んでExcel上に表示
全能少女クオリア@VTuber (@vtuberqualia)さん
「世界初!ディープラーニング”deep learning”系バーチャルYouTuber」全能少女クオリアさんです。
株の売買を深層学習を使って自動的に行うというテーマでした。おそらくかなり難しいテーマで、今のところ利益はあまりでないそうですが、NNCのネットワークモデルは1画面ではとても収まり切らないくらい複雑なものでした。
※遅筆のため、おぼろげな記憶の話になってしまいました。申し訳ありません。
全能少女クオリアさんは、Youtubeで深層学習系の動画を多数アップされています。私はこちらがツボでした。
まとめ
終了後の懇親会にも参加させて頂いたのですが、皆さん様々な立場でNNCを利用したり、利用方法を模索されているようで凄く刺激になりました。
スキル不足ゆえに皆さんの発表内容の素晴らしさをうまく伝えれていないのがもどかしいです。
もっと良い情報を発信できるよう、また勉強会に参加させて頂きたいです。よろしくお願いします!