CC56

CC56: 567収束までに達成したい56リスト

『ディープラーニングを支える技術』著: 岡野原大輔 / 誤字など多いが、ディープラーニング解説本としての完成度は最高

f:id:hyper-pigeon:20220219205336j:plain

読者対象

  • 頭のいい高校生
  • 機械学習・ディープラーニングに興味のある情報系専門学生
  • ディープラーニングを今後研究としたい(が、全く触れたことのない)大学生
  • ディープラーニングで卒論執筆する / している大学生
  • ディープラーニングをおさらいしたい修士課程学生
  • 別分野でディープラーニングを研究へ取り込みたい修士課程学生
  • 理系社会人(別分野)でディープラーニングの基礎から知りたい人

といった印象を受けました。

自分は博士課程学生ですが、内容を読み込むことで「お、この知識が抜けてた」という気づきが複数あったので、そこそこディープラーニングをやっている人でも読む価値は十分にあると思います。というかこれで¥3,000以内なのは安すぎです。

はじめに

先月発売された、『ディープラーニングを支える技術』を読みました。約290頁。 読むのにかかった時間は、引用されている知らない論文を調べる時間含め、3日程度 / 25時間くらいでした。数学は簡単なレベル(高校卒業レベル程度)のものしか出てきません。

本書は、5章+α構成です。1章目は ”ディープラーニングとはなにか” を歴史を踏まえて説明、2〜4章では ”ディープラーニングで現在頻繁に使われる演算や基本概念の解説” を、5章では、"画像・音声・テキストへのニューラルネットワーク応用をざっくり解説" といった感じです。+α として、簡単な数学の解説が入っています。

個人的には、1章に「言葉にするのが難しかったこと」がいっぱい詰まっていて勉強になりました。 「人工知能 / ディープラーニングって何?」という質問に対する最高の回答が載っています。

三行で

ざっとまとめるとこんなかんじです。

  • 日本語でここまで完結にバランス良く説明できている本は類を見ず、間違いなくディープラーニング入門のための決定版 (2022/02 現在)
  • 内容は実用性が高いが、深く踏み込んでいるわけではなく浅く広くという感じ(というかディープラーニングという分野の扱う範囲が広すぎるのでこれは仕方ない)
  • 各項目の詳しい内容は、引用されている論文を参考にするべき

若干内容にクセがあり、CReLU [Shang+, 2016] などの(今はそこまで重要じゃない)テクニックもそこそこ重要そうに書いてあるので注意です(知っていて損はしないですが)。著者の好みがちょっぴり反映されているような気もします。

また、昨今重要視される教師なし学習や強化学習などに関してはさらっと触れるだけで、これらは別途学習する必要があります。個人的に本書は、かなり画像に対する説明に比重があると感じました。なので音声・言語ドメインに関しても、これを読んだ上で別途専門書を買って学んだほうがいいと感じます。また、GANなどの生成モデル、データ拡張、メトリックラーニング、etc、などに関してはほぼノータッチです(こんなものを入れたら1万頁超えてしまいそう)。

あと、実物のコード(TensorFlow、PyTorch など)がないのも特徴です。むしろこれは本書のスタイル上、別に問題ないとは思います。 こういったコードは廃れ流行り(各バージョンによる互換性のなさ)が激しいので、むしろ "基礎" を徹底的に解説してくれるという側面が強いです。

実際に扱っている細かい内容に関しては、Amazonの試し読み機能でも使って調べてみてください。

所感

本書の一番のメリットは、ディープラーニングの用語をまんべんなく要所を抑え網羅しているため、現代のディープラーニングの「辞書」として使えることだと思います(あと1年半くらいは現役でいけると思う)。巻末からの逆引きも可能であり、下手なインターネット解説記事や Qiita より初学者に優しいです。

初学者がこれを一から読むのは正直辛いと思いますが、本書を読めるレベルの基礎がないと正直ディープラーニングをやるのは結構つらいと思います。 (初学者は)爆速で先人たちが築いた "知の高速道路" を駆けられるので、本書を100時間くらいかけてじっくり読んでも割に合うコスパだと思います。

細かい内容としては、BatchNorm や ReLU の解釈(論文発表後に理論的に判明したものも含め)などが明文化してあってよかったです。 自分は数年ディープラーニングに触れていますが、見落としていた理論や歴史などを知ることができ、大いにためになりました(知らないことを知ることができない状態からの脱却)。

一方で、誤字脱字・数式のミスなどが多いと感じました(たいていはどうでもいいミス)。気づいただけでも10箇所以上あります。 これらに関しては、次で列挙します(気づいてないものもあると思います)。

誤字脱字・数式ミスなど

列挙します(自分が勘違いしている可能性もあります)

  • p72, (ミス)「1080sin10100」→「1080~10100」latexのミス?
  • p95, (誤字?)「角度αの余弦cosθ」→「角度θの余弦cosθ」
  • p103, (誤字)「arg mim」→「argmin
  • p146, (数式)「x[i: i+3, j: i+3)(...」→「x[i: i+3, j: i+3](...」
  • p149, (脱字)「相互相関(cross correlatio)」→「相互相関(cross correlation)」
  • p152, (ミス?)「畳み込み層は、画像認識、時系列解析などで利用されています。」→「FCNは、画像認識、時系列解析などで利用されています。」
  • p155, (数式?)「a-1のとき」→「a<-1のとき」(a=-1 のとき、振動)
  • p188, (誤字)「weight standarization」→「weight standardization」
  • p195, (数式)式の3行目のΣ「j=i」→「j=i-1」。テイラー展開を再帰的に行うという文脈から、おそらくこれが正しい
  • p202, (誤字)「catastrophic forgettting」→「catastrophic forgetting」tが多い
  • p216, (ミス)「注29...(2012)」→「注29...(2020)」RealFormerの年代ミス
  • p227, (ミス)「ResNet/スキップ接続/バッチ正規化(2017)」→「ResNet/スキップ接続/バッチ正規化(2015)」謎のミス
  • p227, (ミス)「SENet/グローバル注意機構(2013)」→「SENet/グローバル注意機構(2017)」謎のミス
  • p236, (ミス?)図5.7 の「畳み込み層」→「総結合層」。1x1 Conv でも可能だが、文脈に矛盾が生じる
  • p245, (衍字)「CenterNet: CenterNet: 」→「CenterNet: 」
  • p253, (誤字)「RNN-tranceducer」→「RNN-transducer」

揚げ足取りすぎだろって感じですが、本書のスタイルが初学者向けということもあり、正確な方が良いと思いました。 (あと自分がちゃんと読み込んだアピール)

以上。