感想文:深層学習の原理に迫る ―数学の挑戦―
読んだのはちょっと前なのですがメモ程度に残します。
最初に言っておくと、この本を読んだからといって別に NN の学習をめっちゃうまく出来るようになるわけではないですし、実務ですぐに役立つとも限りません。しかしながら、読んでワクワクする本だと思います。
概要
第三次人工知能(AI)ブームの中核的役割を果たす深層学習(ディープ・ラーニング)は、その高い信頼性と汎用性ゆえに様々な領域に応用されていく一方で、「なぜうまくいくのか」すなわち「なぜ優れた性能を発揮するのか」ということは分かっていない。深層学習の原理を数学的に解明するという難題に、気鋭の研究者が挑む。
おおよその内容としては、1. 昨今の深層学習の隆盛(1章)、2. 深層学習の初歩的知識(2章)、3. 数学的な解明が不十分なトピックをいくつか紹介(3,4,5章) と来て、最後に 4. 原理を解明することの意義(6章) で締めくくります。
内容は非常に平易で*1、日進月歩な深層学習のかなり新しめ*2な数学的トピックについてわかりやすく説明してくれています。実験的に確認されている、既存の数学理論では説明できない現象が何なのか、それらに対してどのような新しい理論で説明を試みているのか、といった点が非常に見どころだと思います。
感想
最近はひたすら道具として機械学習・深層学習を使う日々だったので*3、久しぶりに数学的な理論の話に触れられて新鮮な気持ちになりました。理論系の論文は読もうとするとどうしても数式との戦いになって挫折してしまうため、このような誰にでも直観的にわかる形でまとめて頂けるのは非常にありがたかったです。
「まあ学習させれば何か知らんけどうまくいくしな」で自宅のマシンで学習させる日々を過ごしていますが、改めて既存の数学理論との矛盾を説明されると本当に不思議で面白いですよね。これまで信じられてきた既存の理論と矛盾する結果が出てきて、それに追いつくために理論が再構築されていくってとてもロマンがあります。
最後の章で触れられている通り、別に原理がわからなくても現状 NN は学習できちゃうんですが、理論面の発展は工学的な動作の保証であったり、新しい展開を与えたりするものです。僕自身はあくまで使うだけの人間にすぎませんが多くの場合知らないところでお世話になっているので、理論研究は発展して行って欲しいし応援したいと思っています。
おわりに
この本は一般向けに書かれた本ですが、著者曰く
なお書籍の内容は非技術的です。技術的な方の本はまたいずれ別に出ます(締切〜
— いんそうさん (@insou) 2021年3月22日
らしいので、発売されたらそちらも読みたいですね。おそらくこの本に比べて数学的な難易度が跳ね上がるとは思いますが、バラバラと論文を追うよりは遥かに整理された形で学ぶことが出来ると思うので期待大です!
Kaggle * Master になりました
はじめに
この度、全てのカテゴリ(Competitions, Notebooks, Datasets, Discussion)で Master に昇格し、遂に Kaggle 4x Master になりました!
Competitions Master になって以来 Community への貢献もして行こうと頑張ってきたので、それが目に見える形になって嬉しいです。
因みに、Ranking*1 で確認した限りでは全カテゴリで Master 以上の tier を持っている Kaggler は世界に6人しかいません*2。希少性と僕の ML の実力が釣り合っているかはさておき、これだけレアだと何か嬉しいですね。
一区切りと言うことでこの記事では各カテゴリについて軽く振り返ろうかと思います。
*1:https://www.kaggle.com/rankings?group=datasets *2:2021-06-07 現在。主に Datasets のせいで異常に少ない。
目次
小ネタ:Pytorch で Automatic Mixed Precision (AMP) の ON/OFF をするときの話
最近気付いたのでメモ。長くなってしまったので、結論だけ見たい場合はまとめまで読み飛ばしてください。
まえおき
NN を学習する際の GPU メモリの使用量軽減や学習速度の向上手段として混合精度学習(Mixed Precision Training) は欠かせません。pytorch では torch.cuda.amp
モジュールを用いることでとてもお手軽に使うことが可能です。
以下は official docs に Typical Mixed Precision Training と題して載っている例ですが 、 model の forward と loss の計算を amp.autocast
の with 文中で行い、loss の backward と optimizer の step に amp.GradScaler
を介在させています*1。
Twitterスペースで作業通話してみた
気にはなりつつもしばらく放置してたんですが、ちょっと使ってみたので雑感。
非常にお手軽な一方で Meets とかで作業通話するよりもずっと Open なので慣れが必要な感じがしました。
結構楽しかったのでそのうちまた立てたいですし、他の人のやつにも入ってみたいですね。
色々な意味でお手軽
- 諸々が Twitter で完結しているため部屋を立てるのも入退場もスムーズ
- 仕様上誰でもリスナーとして入れる&誰が部屋に居るのかわかるため、知り合いの Tweet に貼られた meets 等のリンク*1とかよりも圧倒的にハードルが低い
誰に雑談相手になってもらうか問題
- 発言権は部屋を立てた人(host)が管理しており、基本的に speaker は host が指定する*2
- 承諾するかはあくまで listener の自由意志
- テーマを決めない作業通話だと予め決まった相手がいない場合が多そうなので speaker になってくれる人が来るかは賭け*3
- listener も「しゃべりたい」と挙手出来るが、(少なくとも僕は) 知り合いで無い人を承諾するのにかなり躊躇いがあった
- 多分スタンス次第。知り合いでない人に躊躇なくリプを送れるかみたいな。
- 予めスペース名に「speaker は知り合いに限定」とか「相互フォロー限定」と書いとくと良さそう
「何かしゃべらなきゃ」ってちょっと思っちゃう問題
- 気づいたら listener が増えててちょっとビビる*4
- 作業通話なのに「(host として)無言の時間は良くないのかな」ってちょっと思っちゃう
- listener は勝手に聴きに来てるだけなので慣れたら気にならなくなりそう
- これも スペース名に書いとくと親切かも
- 最後の方のほぼ speaker しかいない状態が一番気楽だった
要望
- チャット対応
- 現状だと数種類のスタンプが押せるだけ(しかもその人のアイコンに一瞬出るだけなので作業してる状態では全く気付かない)
- listener とのやり取りが容易になるので色々捗りそう
- PC版/ブラウザ版への対応
- listener の制限機能
- 知らない listener が沢山いるとちょっと気を遣ってしまうので
- 負荷の軽減
その他
- テーマを決めてしゃべるイベントも楽しそう
- LT イベントのもっと簡易版
- 資料を用意しないで良いという意味で非常に楽
- コンペ終了後に超雑に反省会するとかもあり
*1:ある程度仲良くないと入りにくいですよねって話
*2:全員に最初から発言権を与える設定もあるらしい:https://help.twitter.com/ja/using-twitter/spaces
*3:来なかったら即終了ぐらいのスタンスでいいのかも
*4:一番多い時で30人弱