FC2ブログ

子供の落書き帳 Remix

15/4/13:ひと月に一度更新するブログになってしまっている

DLLAB DAY 2018 ハッカソン部門感想 #dllab
2018/07/17(火) 01:02:30

6月21日、DLLAB DAY 2018(ハッカソン) @ 丸の内KITTEに参加してきた。

最初に言ってしまうと、あんまり満足の行く内容ではなかったので、以下の文章はけっこう批判的である。
このイベントはカンファレンス部門とハッカソン部門に分かれていた。
カンファレンスに参加者として登録したのは254人、ハッカソン部門に登録したのは64人であり、ハッカソンの状況を知る人は少ない。
ハッカソンのほうに参加して感想を書いている人はそれほど多くないようだったので、書いておく価値もあるだろうと思う。

概要



まず、どんなイベントか概要を書こう。
Preferred NetworksとMicrosoftが中心となって作った、DLLABというコミュニティがある。
公式ページには「ディープラーニングに関連する、開発事例や最新技術動向を情報発信するコミュニティ」と書かれている。
そのDLLABの一周年を記念して、東京駅のすぐそばのKITTEで開催されたのが今回の「DLLAB DAY 2018」である。「深層学習を使いこなす日」と銘打っている。
イベントの公式ページ DEEP LEARNING LAB | DLLAB DAY 2018

前述の通り、参加者は「カンファレンス部門」と「ハッカソン部門」に分かれる。
午前中に基調講演があり、これは両部門の参加者とも聴講できる。
昼休みを挟んで13:00~17:40までが別々になる。
カンファレンス部門の参加者は講演を聴く。(同じ時間に3つの講演が同時進行する)
ハッカソン部門の人は別室に移動となり、そこでハッカソンを行う。
なお、ハッカソンは更に「CV(Computer Vision)」と「NLP(Natural Language Processing)」の2つに分かれている。俺はCVに参加した。
運営が事前に、4~5人の組で1つのチームになるようにメンバー編成していた。

17:40以降は懇親会であり、再びカンファレンスとハッカソンの参加者が一緒になる。食べ物・飲み物が提供された。

事前課題


自分にとって不利な情報を隠すのはフェアじゃないと思うのでちゃんと書いとこう。
事前課題が与えられたが、あまりちゃんとやらなかった。
事前課題の中では、MNISTやCIFAR10をchainerでCNNを使って解くやり方を説明している。
ザッと目を通したが、自分の環境上で動かしたのは一部だけにとどまった。
直前にやり始めて時間が足りなかったこと、「chainerのtutorialは以前やったから大体分かるだろう」と考えたのがその理由である。


期間中に起きたこと、行動



課題は当日発表された。githubにも上がっている。
GitHub - DeepLearningLab/PotatoChips-Classification
説明資料はこちら。Deep Learning Lab Day 2018 - Hackathon Presentation
ポテトチップスの分類である。パッケージの画像から、その種類を当てる分類タスクであるが、画像がそっくりの物があり、そんなに簡単ではなさそう。

最初は講師の指示のもと、Dockerを使って全チーム一斉に環境構築……のはずだが、ここで問題が発生した。
Dockerを展開するのに必要な領域が不足していて、先に何チームかが環境を構築した時点でそれ以外のチームが構築できなくなったのである。
幸い、自分のチームは少しだけ早くDockerコマンドを打っていたので、ここでつまづくことはなかった。
(その後、運営スタッフが設定を変更したらしく、最終的には全てのチームが環境構築できた。自分自身は被害がなかったので、この点については不満を感じていない。しかし、懇親会で話をしたら「ハッカソン終了の30分前まで環境が構築できなかった」チームもあるらしい。)

画像分類ということで、まずはVGG16の転移学習を作ってみるのが良いかなという相談をチーム内でした。
運営側はchainerを使うと良いよという話をしていた(注:Preferred NetworksとMicrosoftのコミュニティによるイベントである)。
しかし、5人チームのうち1人は、Keras+Tensorflowの方が慣れているというので、それでコードを書き始めた。
俺はCNNのコーディングは殆どやっていなかったので、運営におとなしく従ってchainerで取り掛かった。
もう1人も同様にchainerで書き始めた。
5人のうち残り2人は、最初に自己紹介した感じではあまり深層学習の経験がないようだった。
特にチーム内で教え合うようなこともなかったので、おそらく何をすればいいか分からない手持ち無沙汰な状態だったと思う。
(リーダーシップを取る人がいなかったので、役割分担が全く無く、個人がめいめいに作業する形になったことは反省している。)

自分自身は1から転移学習のコードを書き上げる能力は無いので、
「chainer VGG16 転移学習」などのキーワードでググって、出てきたページからコピーペーストをして、何とか無理やりコードを書いた。
しかし、切り貼りのしかたを間違えたらしく、よくわからないエラーに悩まされ続けて終わった。
Kerasで書いていたチームメイトもコードがどこか間違えていたらしく、動くことは動いたものの学習が全くできていなかった。
最終的にはKerasの結果を提出した。

我々のチームは実質的に成果なしだったが、
全体で見れば最終的に何らかの学習モデルを提出できたチームが大半であった。
VGGとかResnetなどの転移学習で書いたチームもあるし、全結合の3層MLPで提出したところもあったと思う。

途中から「ハッカソン、こんなに放置されるんか……」という境地に陥った。
「今回のイベントはハッカソンなんだから、教えてもらうもんじゃない、参加者が能動的に動くものなんだ。
手取り足取り教えてほしけりゃハンズオンのセミナーに行けよ」と言われてしまえば確かにその通りなのだが。
(注:俺はハッカソン形式のイベントに初めて参加した)

事前予告との相違点



Dockerの環境構築失敗は予想外のアクシデントだったので、致し方ない部分もあると思う。
しかしながら、事前予告と実際とで異なっている点が2点あった。

connpassのページでは

運営側から提供するもの
・課題、ベースとなるNNモデル

と書いてある。しかし実際には、ベースとなるNNモデルは提供されなかった。

そして、connpassを通じて送られてくるメールには

・また、本番の課題ですが、イベント数日前に公開予定です。

と書いてあった。しかし実際には、課題は本番開始時に公開された。


特に問題なのは1点目だと思っている。
なぜなら、「入力から出力まで正しく動くニューラルネットワークのソースコード」があれば、
あとは機械学習のアルゴリズム部分の改良に専念できたからである。
しかし実際には「0からコードを書いてね」だったので、
「入力データを読み込み、機械学習のアルゴリズムに入力できるように変換する」部分を間違って書いてはエラーになる、ということを自分は繰り返してしまった。

(実際には上記の部分も必要であり、重要である。それは間違いない。
しかし、例えばkaggleのコンペの期間は数ヶ月あるが、今回のハッカソンの期間は4時間程度である。
しかもその4時間の中に環境構築の時間も含まれている。
時間の短さを考えれば、この部分は正解を与えておき、調査や試行錯誤やミス修正に要する時間を省くべきではなかったか。)

疑問に思った点


そろそろ収拾がつかなくなってきたので走り書き。

connpass説明より

・17-18時は各チームの成果発表(2分ずつ)、その後、専門家からベストプラクティスを紹介いただきます。

→正解例のコードはgist上のを見せてもらったけど、
「中身の説明はしませんので、各自で読んでください」だったのでそれは「紹介」なのか?

もし運営側がこの記事を見ていたら、お願いがあります。
正解例のコード、確かgistのプライベートリポジトリだったと思うのですが、URLを資料の所に置いてもらえませんでしょうか。
URLをメモったのですが、間違ってPCの電源を落としてしまってメモを無くしました。



- Example から一歩進んで、実際に深層学習を使う方法を学ぶことができる

→今回は何を学んだというのだろう……

コードをコピペして繋ぎ合わせる力を学んだ、とかですかね……?
(繋ぎ合わせるの結局失敗したけど)

ハッカソンはハンズオンではないので、「教えてくれる人がいて、教材があって、そこから学ぶ」ではない。
「何も教えないので勝手にやって」で学ぶとしたら……他のチームメイトから学ぶ、ということだろうか?




事前課題から比べて、難易度が一気に高くなったな、と思った。
より具体的に言うと、機械学習アルゴリズムの手前の段階が必要だということである。

chainerだとget_mnist関数を使って一発でMNISTのデータをロードできる。
他の深層学習フレームワークもほぼ同様である(たぶん)。
また深層学習以外では、scikit-learnにはload_irisなどの関数があり、サンプルデータを関数1つでロードすることができる。
これらは大変便利ではあるのだが、慣れすぎてしまうと、いざ他のデータを入力すると苦労する羽目になる。
機械学習モデルに入力する前の段階も、ちゃんとできるようにならなきゃいかんな……と、今回のイベントで痛感した。



最後に一つ。
Dockerによる環境構築失敗に対して
「色々と(トラブルが)ありましたが、進めますね」という言い方が何度かあったことである。
金を返せなどと要求するつもりは別に無い。
せめて「ご迷惑をおかけしました、すみません」という一言が欲しかったと思うのである。、
そういう台詞はついぞ聞くことが無かったし、無かったせいで心象がより一層悪くなってしまったので、今こうして書いている。

参加費との釣り合い



無料~低価格のイベントならば、「ま、しょうがないか」と納得することもできた。
どうにも釈然としないのは、このイベントの参加費が10000円だったからであろう。

PyConとかRubyKaigiとかに出たことなかった俺には
イベント一発で1万円は余裕の過去最高金額であった。
scikit-learnとTensolFlowの本を買うときもいくぶん躊躇してたけど、その2倍以上する。
俺は個人的にイベントに申し込みしていて、会社から費用を出してもらっていないので、つまり自腹である。
自腹を切って行った結果がこれか……!!
(余談であるが、「会社から費用を出してもらった」「上司に『勉強しに行ってこい』と言われて申し込んだ」という人も多く、普段俺が行くような勉強会とは客層がやや違っていたように思う。)


ブレインパッドとかキカガクとかのハンズオンセミナーで手取り足取り教えてもらおうとすれば、
1万円なんてものでは済まない。
(機械学習による問題解決実践 (データサイエンティスト入門研修) | データ活用人材育成サービス by BrainPad:2日216000円)
(ディープラーニング ハンズオンセミナー | 株式会社キカガク:3日216000円)
それに比べりゃ遥かに安いと思うべきなのか。

ちなみに、dllabのイベントがいつも高額というわけではない。このイベントの次の週にもイベントがあった。
Microsoft Machine Learning Meetup - connpass
この参加費は500円である。……ちきしょー。
ええ、分かってます。
普段は品川のマイクロソフト本社で開催するから会場費がかからないんですよね。
それと比べて今回のDLLAB DAY 2018は東京駅近くの会場を借りたから会場費がかかっています。そのためには参加費を上げる必要があったんですよね。

ハッカソン参加者の感想レポート


他のハッカソン参加者の感想レポートを見つけたので、最後に貼っておきます。

DLLAB DAY 2018 ハッカソンに参加してきた - OKKAH NET
DLLAB DAY 2018行ってきました | 彌冨 仁研究室
DLLAB Dayのハッカソンに参加してきたよ(実装編) - テキトー
  1. 2018/07/17(火) 01:02:30|
  2. プログラミング
  3. | トラックバック:0
  4. | コメント:0

コメント


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://luvtome.blog5.fc2.com/tb.php/649-15706884
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad