rohaniのブログ

ゆるっと自然言語処理奴。ときどき工作系バイト。

2018年冬インターンのメモをまとめておく

インターンの時にとったメモをいま見返したら、結構重要そうなことが書いてあったので、ここにまとめておく。

研究のサイクル

高専でも卒研をしておいて今更だけれど,(初めてまともに)研究のサイクルを教わった.

  1. サーベイ
  2. 手法提案
  3. 実装
  4. 実験
  5. 評価 → 2へ

感想

きちんと教わったことはなかったけれど,感覚的には知っていた. けれども,フレームワークとして図式化されると,「できていなかったな」と思った.

NN学習時は何を記録しておくべきか

  • NNの構造に関わる変数,学習に関わる変数

logを見たときに,それがどんな設定で学習されたどのようなモデルかということが分かる.

  • minibatch毎のLossとAccuracy

あるminibatchの学習時にいきなりLossが下がっている,といったことが発見できると,minibatchの異常が検知できる. 異常の原因としては,
①minibatchに偏りがある
②特徴量がどこかおかしい
③正解ラベルがどこかおかしい
などを疑う.

  • 1epoch毎の開発及びテストデータに対するLoss, AccとLoss, Acc

開発データのlogからはearly-stoppingまでの経緯が分かる. テストデータのlogからは,開発データとテストデータに乖離がないかどうかをチェックできる. 学習曲線が不吉な動きをしていたりearly-stoppingが早すぎるときは, minibatchを大きくしたり学習率を下げる. それで止まるまでのepoch数が伸び,かつ学習曲線が綺麗であれば,minibatchを大きくして大丈夫.

  • 最終的な評価結果

early-stoppingする場合はmaxepoch目のモデルではなくearly-stoppingしたところのモデルの結果を出力しておく. 評価は別でもいいが,学習できたかどうかを確認できる.

感想

logとして人語でtxtファイルにしても,max epochが大きいと見づらくなる. 各情報をcsv形式でバイナリ的に統一書式で保存しておいて,それを表示するスクリプトを書き, 参照できるようにすると良いかも. csvから学習曲線図を描けるようにするとなお良いと思う.

実験結果の評価

  • 性能評価

クラスごとのF値などを見ることで,クラスごとに分類の偏りがないかどうか確かめることができる. ベースラインシステムの結果と比べて傾向を見る.

  • エラー分析

誤分類したデータの傾向を見て,改良点を見つけること.

  • いくつか原因に検討をつけ,観察する項目を決めておく.
  • 全部を見きれない場合は,観察する対象をリストアップすると効率的かも.
  • テストデータセットのラベルそのものを疑ってみることも必要な場合がある.
  • テストデータセット自体の傾向をまず自分で掴んでおくと,そのあとやりやすい気がした.

実験結果を報告する時に気をつけるべき2つのこと

  • 伝えたいことの要点をまとめる

実験結果を報告するときは,相手の時間を頂くわけだから,必要最低限を効果的に伝えるべきであるとのこと.

十分統計量の概念のように,その情報があれば実験結果の傾向が分かる,というような的確な情報を選択的に提出すると良いらしい.

  • 比較材料を添える

何かとの比較実験の場合は,その結果も載せておく. 考察の結果追加で実験が必要となれば,実験してその結果も載せていく.

感想

要約力が足りない。国語か...。
実験は「目的、方法、結果、考察、結論、Future work」という、高専のレポートで散々書かされた構成が基本の枠組み。 そのうち、これは個人的な考えだけれど、報告する時に大事なのは、的確な目的・結論とそれを裏付けるのに必要十分な結果・考察、具体的なFuture workで、方法(苦労談)や結果(成果の列挙)に長々と時間を割くべきではない。 自戒。

発表資料作成について

研究は使ってもらって初めて価値が出る

研究は世の中の課題を解決するために行うものだ. 課題はたいていの場合一つの研究で解決するものではないので,色々な人が研究を積み重ねていく必要がある.

故に,誰にも参照してもらえない研究に価値はない.

従って他者に自分の研究を理解してもらうことは重要である.

  • 頭を使わずとも分かる発表

多くの人に理解してもらうためには,聞き手が考えなくても伝わるようにすることが大事.

  • 論理的で分かりやすい発表

論理が途切れると理解できなくなる. 冗長にせず,論理の飛躍もなく伝えることが大事.

Tips: Python DeBugger

Pythonのデバッガツール. プログラム実行中に任意の位置で停止し,その時点での各変数の中身を見たり,1行ずつ実行・履行したりできる.

「なんでだかうまくいかない」と要領を得ないことをぼやいていたときに,教わった.

Tips: 飲み会

お世話になった部署の歓迎会で,心に残るお言葉を賜った.

  • 時間を大切に

歳をとると,体におかしいところが出始める. 無駄にできる時間なんて少しもないなと思った. 仕事も,家族も,趣味も. お互いに,毎日時間を大切にいきましょう.

  • 互いの成長

先輩の時間を食いつぶすぐらいのつもりで,たくさん質問をしましょう.議論をしましょう. それに答えるために必死になって,先輩は成長できる. 困らせに行きましょう.