機械学習について全くの専門外で初心者だった私がコンペサイトProbspaceのRe:不動産取引価格予測コンペで3位入賞、YouTube動画視聴回数予測コンペで9位入賞するなど、累計で金2銀1銅1を獲得することができ、総合ランクで1位に到達することができました。
これまでたどってきた道のりを振り返って、良かった点、悪かった点を見直して、今後の進め方を考えていきたいと思います。
悪戦苦闘、一進一退しながら勧めてきた内容を、思いつくまま記載しているので、お見苦しい箇所もありますが、これから機械学習を始める皆さんや、始めたばかりの皆さんの何らかのキッカケになれれば光栄です。
では、振り返ってまいりたいと思います。
【目次】
1.G検定との出会い(2019年2月〜3月)
私の人生を変えたといっても過言ではない出来事が、G検定という資格との出会いでした。
この資格は、まだ新しい資格で、実際に受験された方々の中でも様々な評価があるところなのですが、私にとってこの資格を取得するまでの過程があって、今の私があるのは間違いないです。
この資格を受験する前は、ただぼんやりと人工知能を利用して何かがやりたい、社会に貢献できることがしたいと考えていただけでした。
このままでは、何も前に進まないと思い、とりあえず「人工知能」「勉強」「資格」「AI」などなど、いろいろキーワードを入れて片っ端から検索してみました。
その結果、以下のサイトにたどり着き、どうやら「G検定」(JDLA Deep Learning for GENERAL)という資格があることがわかりました。
資格試験について - 一般社団法人日本ディープラーニング協会【公式】
この資格に取り組むことで、人工知能とはなにか、何が解決できて何が課題なのか、どのような経緯をたどってきているのか、どこに向かっているのかなど、いろいろな背景や現在の状況を知ることができました。
また、勉強すううちに「機械学習」というものがあることを知り、「もっと深く勉強したい!」と強く意識付けされるキッカケとなったのが、この試験でした。
そして、無事、G検定に合格できたことも、まだまだ自分もやれるんだという大きな自信につながりました。
実際に受験してみた感想や、勉強内容については、過去の記事にまとめていますので、興味がございましたら、そちらもご参照ください。
g-kentei.hatenablog.com
2.Pythonの勉強を始める(2019年4月)
G検定に合格して、すぐにその上位資格のE資格を受験したいと思ったのですが、受験するためには、JDLA認定プログラムを修了している必要があり、実習としてPythonというプログラミング言語を使って、実際に機械学習モデルを自ら構築できる必要がありました。
「Python」の読み方すら知らなかった私は、以下の2冊の本を急いで購入し、1から勉強をはじめました。
入門Python 3 [ ビル・ルバノビック ]
ゼロから作るDeep Learning Pythonで学ぶディープラーニングの理論と実装 [ 斎藤 康毅 ]
特に、ゼロから作るDeep Learning Pythonで学ぶディープラーニングの理論と実装 [ 斎藤 康毅 ]は、名著で、現在も、続編の自然言語処理編、フレームワーク編とともに愛読しています。
ゼロから作るDeep Learning 2 自然言語処理編 [ 斎藤 康毅 ]
ゼロから作るDeep Learning 3 フレームワーク編 [ 斎藤康毅 ]
Pythonについては、最初、Anacondaのインストールに四苦八苦して、環境構築に悪戦苦闘していましたが、講座が始まる頃には、以下のようなことができるようになっていました。
これまで、本格的にプログラミングをやったことがなかったのですが、プログラミングは、プログラムしたとおりに必ず動いてくれて、自分の思い通りに動く喜びをしることができました。(もちろん、プログラムしたとおりに忠実に動くので、少しのミスがあると、全く動かなかったりすることもあるのですが・・・。)
3.kaggleのデータセットを使って機械学習に挑戦する(2019年4月〜5月)
知り合いからKaggleというものの存在を教えてもらい、データ分析のコンペティションなどが行われていることを知りました。
実際にコンペに参加するのは、まだまだ厳しかったのですが、kaggleのデータセットを使って、自己流も混ざっていますが、機械学習について、本格的に勉強をはじめました。
なかなか精度が向上しなかったり、精度が向上したかと思えばリークしてしまったり、一進一退を繰り返していました。
しかしながら、今思うと、このときに、データを分析したり、前処理を行ったり、モデルのハイパーパラメータを調整したり、結果を評価したりすることで、全体の流れを実際に手を動かして取り組んでいたことが、非常に役に立っていると思います。
具体的には、以下のようなことに取り組みました。
4.E資格を受験する(2019年5月〜8月)
Pythonと機械学習を事前に学習した状態で、E資格の認定講座を受講いたしました。
まっさらな気持ちで受講されている方々もいらっしゃいましたが、私は受講してすぐ理解できるタイプではないので、事前に十分な予習をしてから受講できたのは、非常に良かったと思いました。
認定講座では、理論と平行して実装も行っていくので、知識だけでなく、技術を感覚的に身につけられていると感じました。
また、今、いろいろなコンペに参加する際に何も考えずライブラリを使っている各種学習モデルについても、中身を理解して、1から手組で作る経験が得られたことは、パラメータの調整等の意味がわかって調整できるので、非常に有意義でした。
その効果もあって、E資格(JDLA Deep Learning for ENGINEER 2019 #2)に合格することができました。
詳細は、以下の過去記事もご参照ください。
oregin-ai.hatenablog.com
5.Probspaceで給与推定コンペで47位入賞(銅賞)(2019年11月〜12月)
E資格取得後、1〜2ヶ月ほど、復習をしながら、準備を整えて、満を持してProbspaceというデータ分析プラットフォームで開催されていた給与推定コンペに参戦しました。
結果としては、310チーム中 47位 ということで、上位15%に入り、銅賞をいただくことができました。
テーブルコンペだったので、取り組みやすく、チュートリアルもわかりやすかったので、初めてのコンペながら楽しんで参戦することができました。
実際に他の皆さんと切磋琢磨しながら取り組むのは、自分一人で学習を進めるのに比べて、何倍も進歩が違うと感じました。
一方で、これまでの積み上げがあったからこそ、なんとかついていけたのだとも思いました。
今のところ、自分自信の理解を深める積み上げの期間と、積み上げた結果を確認するアウトプットの期間を織り交ぜていくのが自分の中ではベストです。
コンペに参加しながら、いろいろな最新情報のインプットもできる人には、本当に感服いたします。
給与推定コンペの振り返りは、以下もご参照ください。
oregin-ai.hatenablog.com
6.Probspaceで浮世絵作者予測コンペで10位入賞(銀賞)(2019年10月〜2020年1月)
先程の、給与推定コンペと並行して、浮世絵の作者を予測するコンペにも参戦いたしました。
こちらは、約4ヶ月の長丁場でしたが、E資格時に画像分類はさんざん実施してきていたので、知識をフル動員して頑張りました。
結果は、232チーム中 10位に入賞することができ、銀賞をいただきました。
ここまで来ると、だんだん欲がでてきて、どんどんコンペに参加したくなってきていました。
しかしながら、今回のコンペでは、E資格で学習した内容でそこそこの成績までは到達できたものの、10位まで到達するまでには、いろんなパターンを組み合わせて、いろいろ試した結果、スコアが向上したという行きあたりばったりの改善策もありました。
このため、なぜそうなるのかということも理解したい気持がわいてきました。
コンペでの取組内容は、以下をご参照ください。
oregin-ai.hatenablog.com
7.東京大学GCI Winter 2019を受講(2019年12月〜2020年3月)
浮世絵作者予測コンペを取り組む中で、もっと理解を深めたい欲求がでてきたときに、ちょうど東京大学のGCI寄附講座という無料講座を見つけ、早速申し込み、運良く参加することができました。 gci.t.u-tokyo.ac.jp
こちらは、オンラインの講座だったのですが、単なる講義だけでなく、毎回宿題もあり、コンペもあり、コンペも開催される、かなりハードな4ヶ月間を過ごすことになりました。
しかし、その甲斐あって、確率統計などの基礎知識から、モデルの検証方法や、チューニング方法にいたるまで、基礎理論から実装、さらにはビジネスへの応用まで含めた、スキルアップをすることができました。
この内容を無料で受けられるのは、非常にありがたいと思いました。機会があれば、絶対受講をおすすめいたします。
詳細は以下の記事も、ご参照ください。
8.ProbspaceでYouTube動画視聴回数予測コンペで9位入賞(2020年4月〜6月)
そして、GCIでの成果を発揮すべく、YouTube動画視聴回数予測コンペに参戦しました。
このコンペは、一見、テーブルコンペのように見えましたが、コメント欄を自然言語処理したり、サムネイル画像を画像処理したりするなど、工夫次第では、どんどん領域が広がる複合的なコンペでした。
今までのなかで一番難しく、一番楽しいコンペでした。
結果としては、446チーム中 9位に入賞することができ、金賞をいただきました!
このコンペで一番苦労したのは、環境構築と維持でした。
いろいろな学習モデルを使う際に、テーブルデータ用の分析するための環境、自然言語処理をするための環境、画像処理をするための環境など、いろいろな環境をつくらなくてはならず、一個の環境をつくるために、前の分析を行うための環境が崩れてしまったりして、とても苦労しました。
また、たくさんのコードを作って、いろんなバージョンができたので、どの組み合わせだったか等の管理にも非常に苦労しました。
今回のコンペでは、単に機械学習という観点だけでなく、「システム開発」としての、効率的な運用も考えて行く必要があるということに気づけたとても有意義なコンペでした。
9.ProbspaceでRe:不動産取引価格予測コンペで3位入賞(金賞)(2020年6月〜2020年8月)
Youtubeコンペ終了にあわせて、一時度開催された不動産取引価格予測コンペの評価指標を変更したコンペという一風変わった「Re:不動産取引価格予測コンペ」が開始され、9位入賞の勢いで、続けての参加をいたしました。
結果は、252チーム中、なんと3位入賞と大躍進をとげました!
今回のコンペは、評価指標が変わっただけのコンペだったのですが、前回優勝のコードでも、上位のスコアには到達できないということで、評価指標によってこんなに結果が変わるものかと、驚きました。
また、今回はarenzero(masay)さんにお声がけいただき、初めてチームで参加させていただきました。
PublicLBでは、1位だっただけに、Shake downで3位になってしまったのは、非常に悔しい結果でしたが、初めてチームを組ませていただいて、順位としてもこれまでの最高順位となることができ、とても学びの多い有意義なコンペでした。
自身の成長面でも、Youtubeコンペでの反省点を活かし、いろんなモデルをたくさん試すことよりも、徹底的にデータと向き合って、前処理に注力したことが功を奏したと感じました。
また、環境構築面では、後述の講座受講で学んだDockerを利用して、環境を構築したので、とても簡単に今回のコンペ専用の環境を作ることができ、今後に活かせることができました。
コンペでの取組内容の詳細は、以下の記事もご参照ください。
oregin-ai.hatenablog.com
10.現在取り組み中の内容、そして今後にむけて
現在は、ProbspaceのRe:不動産コンペや、Kaggleのコンペに参戦しつつ、YouTubeコンペの反省を込めて、環境構築や管理に必要なDockerについて、 かめ@usdatascientistさんの以下の講座を受講して勉強中です。
これまで学習してきた内容は、まだ受講途中ですが、以下の記事にまとめました。
oregin-ai.hatenablog.com
また、このDocker講座が終わったら、自分のコードについて、適切にバージョン管理等ができるように、GitHubについても勉強していきたいと思います。
以上が、これまでの私の取り組んできた道のりになります。
G検定に出会ってから約1年半、いろいろ紆余曲折がありましたが、なんとかここまでやってくることができました。
まだまだ道半ばではございますが、世間様にお役に立てるアウトプットを出していけるよう、今後も精進してまいりますので、引き続きよろしくお願いいたします。