リモート開発メインのソフトウェア開発企業のエンジニアブログです

機械学習・自然言語処理のお勧め本など

昨年くらいから、社内では自然言語処理関連のR&Dやプロジェクトを進めています。私自身は、今のところ実装などの細かい部分には関わっていませんが、プロジェクトの責任者として基本的な知識は求められます。

本記事では、私が機械学習・自然言語処理で参考になった書籍・ウェブサイトなどを紹介していきます。

概要

対象読者

書籍などは、人によって向き・不向きがありますし、既に持っている知識によってもお勧めが変わってきます。それを踏まえた上で、主に以下のような人が機械学習・自然言語処理を学ぶのに良いもの、という基準で選んでいきます。

  • ソフトウェア開発者
  • 高校レベルの数学(2×2の行列計算など)がある程度は分かる
    • が、高度な数学は分からない
  • 自然言語処理について勉強したい
    • 一からモデルを作ったり理論的なところを深く知るよりは、自然言語処理を使った応用例に興味がある

紹介する本・サイトについて

ジャンル(機械学習、自然言語処理、etc.)ごとに紹介します。

基本的には参考になったものを紹介します。ただ、紹介したものでも、内容の全てが素晴らしいわけでは無いので、良くなかった点なども書きます。

「個人評価」の★は5点満点です。あくまで私の用途に合っている(上に書いた「対象読者」)かどうかという観点なので、違った背景の人(前提知識が異なる、やりたいことが異なるなど)にとっては異なる評価となり得ます。

機械学習

人工知能は人間を超えるか

個人評価: ★★★★

著者の松尾豊先生は有名人ですし好き嫌いは分かれますが、好き嫌いは抜きにしても、本書は機械学習を全く知らない人が読む入門書としては良書だと思います。

過去のAIブームからの経緯や、そこで出てくる用語なども分かりやすく説明しています。機械学習について知りたければ、第4章以降を読めば良いと思います。

なお、2015年に出た本なので、ディープラーニングについては画像認識についてしか扱っていません。

仕事ではじめる機械学習

個人評価: ★★★★

機械学習のプロジェクトとはどうやって進むのか、機械学習で何が出来るのか、等から始まり、具体的なシステム構築や検証の方法などに触れています。

機械学習のプロジェクトに突っ込まれた、上司から機械学習で何かやってみてと言われた、機械学習に興味があるが何から勉強して良いか分からない、そういった人達にお勧め出来る本だと思います。

全体の流れが把握出来る一方、少し広く浅くという感じがするところが惜しいところです。1章、2章、4章辺りの内容がもう少し充実していると良いと思いました。

数学

わけがわかる機械学習

個人評価: ★★★

タイトルは「機械学習」とありますが、機械学習で出てくる数学、特に確率を分かりやすく解説した本、と思った方が良いです。

機械学習とは何か、というのはある程度知っていることが前提です。1章の「機械学習ことはじめ」がもう少し充実していれば、数学がある程度分かる方向けの機械学習の入門書、としてお勧め出来たと思います。

数学の説明は丁寧なので、高校数学が理解出来ていれば8割くらいは何とかついていけるものと思います。

プログラミングのための線形代数

個人評価: ★★★

線形代数は機械学習関連の実装には必須の知識だと思いますが、プログラミングという観点での線形代数をしっかり学びたい人に良いと思います。

一方、細かい線形代数の計算が分からなくても、使い方さえ分かっていれば実務上問題無い場面も多いため、本書の内容が分からなくてもそこまで悲観する必要は無いかなと思います。

ディープラーニング

ゼロから作るDeep Learning

個人評価: ★★★★★

ディープラーニングを使って何かをしたい場合、通常は TensorFlow や PyTorch などのフレームワークを使うのですが、本書は Python のコードでゼロから作り上げていくというコンセプトの本です。

フレームワークに隠されている部分も丁寧に説明しつつ実装していくので、結果としてディープラーニングについての基礎知識が得られます。なお、機械学習が何か、という知識はある程度持っていることが前提の本です。

私は、この本がディープラーニングについて基礎を学ぶのに一番役に立ったと思っています。社内でも本書の読書会を2周やりました。

なお、私自身はこの本は読みましたが、コードは書いていません。

自然言語処理

自然言語処理の基本と技術

個人評価: ★★★★

主に、機械学習以前の自然言語処理についての幅広いトピックについて紹介されています。

形態素解析、n-gram、コーパスなど、そもそも自然言語処理の用語があまり分かっていない人にとっては、本書をざっと読んでおくと役に立つと思います。

2016年の本なので、当たり前ですが、ここ最近の自然言語処理関連の劇的な進歩については殆ど触れられていません。

自然言語処理〔改訂版〕 (放送大学教材)

個人評価: ★★★

タイトルにある通り大学の教科書です。初学者向けなので、それほど難しい数式も出てこなく、トピックも幅広いので、機械学習以外の自然言語処理全般について、少し理屈的な事を勉強したい人には良い本だと思います。

ゼロから作るDeep Learning ❷ ―自然言語処理編

個人評価: ★★★★

前掲の本の第二弾です。第一弾と同様のコンセプトで、NLP 関連のディープラーニング系の技術について、内部的な仕組みを学べます。

2018年に出た本で、重要技術であるアテンション (Attention) まで説明されているので、2020年の今買っても十分に役に立つと思います。

自然言語処理のための深層学習

個人評価: ★★★★

翻訳本です。これまでに紹介した(数学関連以外の)本に比べると数式が若干多めですが、数式を理解しなくてもある程度は読み進められます。

内容としては、ニューラルネットワークの基礎、自然言語処理の基本的な話をした後で、自然言語処理に関連するNN関連の話として RNN、LSTM、GRU、アテンション、木構造ニューラルネットワークなどを説明しています。

「ゼロから作るDeep Learning ❷」より幅広い内容なので、知識を広げるのには良いと思いますが、細かい理論などにあまり興味が無い人は、本書はあえて読まなくても良いかもしれません。

BERT関連の弊社ブログ記事など

自画自賛で済みません。弊社ブログで、miyamonz が BERT について分かりやすく解説しています。

BERTについて勉強したことまとめ (2)モデル構造について – もばらぶエンジニアブログ

個人評価: ★★★★★

個人的には説明も分かりやすいと思いますが、記事中に、有用なウェブサイトや論文などへのリンクがあるので、それらを一通り読むとBERT の構造及び何が出来るのかについて理解が出来ると思います。

BERT の構造に関しては、Transformer の理解が必要ですが、以下のブログ記事が圧倒的に分かりやすかったです。

The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time.

BERT の論文に関しては、以下の Qiita の記事が分かりやすかったです。

自然言語処理の王様「BERT」の論文を徹底解説 – Qiita

番外編: 目的には合わなかったもの

今回、上に記載した「対象読者」向けの書籍などを紹介しましたが、最後に、私の用途には合わなかったものの、読んだ(り挫折した)本をいくつか紹介します。

[第2版]Python 機械学習プログラミング

私が持っているのは第1版なのですが、機械学習関連の幅広いトピックを、数式・Python コードを使って丁寧に解説しています。

理屈を理解して、かつ実装を行う人にとってはとても良い本だと思います。

数式の量が多く、(今改めて流し読みしたら、ある程度は理解出来そうでしたが)私は途中で挫折しました。

ベイズ推論による機械学習入門

買った後でパラパラ眺めた感じでは、学部生辺りの人が読む入門の教科書としては良さそうな本でした。

扱っている内容は、機械学習の基本知識、確率分布、ベイズ推論、そして応用という感じです。

言語処理のための機械学習入門

大学の教科書、という感じです。1章の「必要な数学的知識」では例題と解答があるのですが、解答の解説が分からなくて挫折しました。

Amazon のレビューだと高評価が多いので、改めてざっと目を通したところ、2章以降で機械学習や自然言語処理に必要なトピックがバランス良く解説されていることに気づきました。

大学の講義や学部生のゼミなどには良さそうです。ただ、大学生であれば、TAや研究室の先輩に質問できるのでいいと思いますが、社会人にとってはちょっと厳しいかなと思います。

他にも良い本が色々出ているので、あえてこの本を選ぶ必要は無いかなと個人的には思います。

まとめ

機械学習関連の本は結構買いましたが、最近では教科書的な本から使い方に関する本まで、色んな種類の本が沢山出ているので、目的に合った本を選ぶのが大変という贅沢な悩みがあります。

自然言語処理に関して言うと、近年では BERT の衝撃がかなり大きかったので、そこまでを最短で理解するには

  • 機械学習の基本的な本
  • ディープラーニングについての基本的な本
  • 自然言語処理全般の基礎知識に関する本
  • Attention や Transformer についてのブログ記事とか
  • BERT 関連の記事

という順番で読んでいくと良いかなと思いました。

自然言語処理に限った話ではありませんが、興味のある話題を中心に、そこから徐々に知識を広げていくと良いと思います。

← 前の投稿

PayPal vs. Stripe

次の投稿 →

BERTについて勉強したことまとめ (2)モデル構造について

コメントを残す