俵言

しがない社会人が書く、勉強とかのこと。最近は機械学習や kaggle 関連がメイン。

感想文:深層学習の原理に迫る ―数学の挑戦―

読んだのはちょっと前なのですがメモ程度に残します。

最初に言っておくと、この本を読んだからといって別に NN の学習をめっちゃうまく出来るようになるわけではないですし、実務ですぐに役立つとも限りません。しかしながら、読んでワクワクする本だと思います。

概要

第三次人工知能(AI)ブームの中核的役割を果たす深層学習(ディープ・ラーニング)は、その高い信頼性と汎用性ゆえに様々な領域に応用されていく一方で、「なぜうまくいくのか」すなわち「なぜ優れた性能を発揮するのか」ということは分かっていない。深層学習の原理を数学的に解明するという難題に、気鋭の研究者が挑む。

おおよその内容としては、1. 昨今の深層学習の隆盛(1章)、2. 深層学習の初歩的知識(2章)、3. 数学的な解明が不十分なトピックをいくつか紹介(3,4,5章) と来て、最後に 4. 原理を解明することの意義(6章) で締めくくります。

内容は非常に平易で*1、日進月歩な深層学習のかなり新しめ*2な数学的トピックについてわかりやすく説明してくれています。実験的に確認されている、既存の数学理論では説明できない現象が何なのか、それらに対してどのような新しい理論で説明を試みているのか、といった点が非常に見どころだと思います。

感想

最近はひたすら道具として機械学習・深層学習を使う日々だったので*3、久しぶりに数学的な理論の話に触れられて新鮮な気持ちになりました。理論系の論文は読もうとするとどうしても数式との戦いになって挫折してしまうため、このような誰にでも直観的にわかる形でまとめて頂けるのは非常にありがたかったです。
「まあ学習させれば何か知らんけどうまくいくしな」で自宅のマシンで学習させる日々を過ごしていますが、改めて既存の数学理論との矛盾を説明されると本当に不思議で面白いですよね。これまで信じられてきた既存の理論と矛盾する結果が出てきて、それに追いつくために理論が再構築されていくってとてもロマンがあります。

最後の章で触れられている通り、別に原理がわからなくても現状 NN は学習できちゃうんですが、理論面の発展は工学的な動作の保証であったり、新しい展開を与えたりするものです。僕自身はあくまで使うだけの人間にすぎませんが多くの場合知らないところでお世話になっているので、理論研究は発展して行って欲しいし応援したいと思っています。

おわりに

この本は一般向けに書かれた本ですが、著者曰く

らしいので、発売されたらそちらも読みたいですね。おそらくこの本に比べて数学的な難易度が跳ね上がるとは思いますが、バラバラと論文を追うよりは遥かに整理された形で学ぶことが出来ると思うので期待大です!

*1:少なくとも機械学習をかじったことがあるひとならまず詰まらないです。行列計算が一切できないとかだとつらいかもしれませんが。

*2:著者も本文中で述べているのですが、もしかしたら更なる進歩が既に起きているかもしれません。

*3:Kaggle とか Kaggle とか Kaggle とか

Kaggle * Master になりました

はじめに

この度、全てのカテゴリ(Competitions, Notebooks, Datasets, Discussion)で Master に昇格し、遂に Kaggle 4x Master になりました!

f:id:Tawara:20210607200053p:plain
どのカテゴリでも Master なので * 表記でいいかもしれない

Competitions Master になって以来 Community への貢献もして行こうと頑張ってきたので、それが目に見える形になって嬉しいです。

因みに、Ranking*1 で確認した限りでは全カテゴリで Master 以上の tier を持っている Kaggler は世界に6人しかいません*2。希少性と僕の ML の実力が釣り合っているかはさておき、これだけレアだと何か嬉しいですね。


一区切りと言うことでこの記事では各カテゴリについて軽く振り返ろうかと思います。


目次

  • はじめに
  • カテゴリごとの振り返り
    • Competitions Master (2020-03)
    • Datasets Master (2020-12)
    • Notebooks Master (2021-02)
    • Discussion Master (2021-06)
  • 終わりに

*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

*1:おそらく簡単のために input と target を gpu device に送る部分などが省略されているので注意

続きを読む

Twitterスペースで作業通話してみた

気にはなりつつもしばらく放置してたんですが、ちょっと使ってみたので雑感。
非常にお手軽な一方で Meets とかで作業通話するよりもずっと Open なので慣れが必要な感じがしました。

結構楽しかったのでそのうちまた立てたいですし、他の人のやつにも入ってみたいですね。

色々な意味でお手軽

  • 諸々が Twitter で完結しているため部屋を立てるのも入退場もスムーズ
  • 仕様上誰でもリスナーとして入れる&誰が部屋に居るのかわかるため、知り合いの Tweet に貼られた meets 等のリンク*1とかよりも圧倒的にハードルが低い

誰に雑談相手になってもらうか問題

  • 発言権は部屋を立てた人(host)が管理しており、基本的に speaker は host が指定する*2
    • 承諾するかはあくまで listener の自由意志
    • テーマを決めない作業通話だと予め決まった相手がいない場合が多そうなので speaker になってくれる人が来るかは賭け*3
  • listener も「しゃべりたい」と挙手出来るが、(少なくとも僕は) 知り合いで無い人を承諾するのにかなり躊躇いがあった
    • 多分スタンス次第。知り合いでない人に躊躇なくリプを送れるかみたいな。
    • 予めスペース名に「speaker は知り合いに限定」とか「相互フォロー限定」と書いとくと良さそう

「何かしゃべらなきゃ」ってちょっと思っちゃう問題

  • 気づいたら listener が増えててちょっとビビる*4
  • 作業通話なのに「(host として)無言の時間は良くないのかな」ってちょっと思っちゃう
    • listener は勝手に聴きに来てるだけなので慣れたら気にならなくなりそう
    • これも スペース名に書いとくと親切かも
  • 最後の方のほぼ speaker しかいない状態が一番気楽だった

要望

  • チャット対応
    • 現状だと数種類のスタンプが押せるだけ(しかもその人のアイコンに一瞬出るだけなので作業してる状態では全く気付かない)
    • listener とのやり取りが容易になるので色々捗りそう
  • PC版/ブラウザ版への対応
    • PC で作業してるので speaker の承諾やらなんやらをするためにスマホを見るのが面倒
    • 通話だけがメインならスマホでも良いのかも
  • listener の制限機能
    • 知らない listener が沢山いるとちょっと気を遣ってしまうので
  • 負荷の軽減
    • 特に iOS 勢から「重い」「スマホが結構熱くなってる」というコメントあり

その他

  • テーマを決めてしゃべるイベントも楽しそう
    • LT イベントのもっと簡易版
    • 資料を用意しないで良いという意味で非常に楽
  • コンペ終了後に超雑に反省会するとかもあり

*1:ある程度仲良くないと入りにくいですよねって話

*2:全員に最初から発言権を与える設定もあるらしい:https://help.twitter.com/ja/using-twitter/spaces

*3:来なかったら即終了ぐらいのスタンスでいいのかも

*4:一番多い時で30人弱