Prateek Joshiが著した『PythonによるAIプログラミング入門』(オライリー・ジャパン、2019年)を読みました。
本書の副題は、『ディープラーニングを始める前に身につけておくべき15の基礎技術』です。第2章から第16章までの15章で、1章ずつ様々なデータ解析・機械学習の手法を解説しています。Pythonコードの実装をメインにした解説なので、手を動かしながら各手法を学ぶことができます。各章の内容は互いに独立性が高いため、自身の興味のある内容から読めます。
本書の内容を列挙すると、図のようになります。
本書のコードは、github上に公開されています。
本ページをgit cloneする場合は、コマンドプロンプトで以下のコマンドを打ちます。
$ cd {クローンしたい場所}
$ git clone https://github.com/oreilly-japan/artificial-intelligence-with-python-ja.git
今回は、AI、機械学習、ディープラーニング、データ解析の様々な手法の全体を俯瞰します。
まず、ディープラーニングは機械学習の一手法であり、機械学習はAI(人工知能)を実現するためのアプローチの一つです。すなわち、AIの中に機械学習があり、機械学習の中にディープラーニングがあるという包含関係です。
機械学習には、教師あり学習と教師なし学習があります。教師あり学習では、データと正解ラベルが与えられて、データから正解ラベルを推論できるように学習が行われます。一方、教師なし学習ではデータだけが与えられて、クラスタリングのタスクをこなします。
機械学習に関連する手法として、論理プログラミング、ヒューリスティック探索、遺伝的アルゴリズム、ゲーム解法があります。ヒューリスティックはアルゴリズムと対になる概念です。アルゴリズムは必ず最善解を見つけることができる操作のことですが、問題の種類により、時として計算量が膨大になります。一方、ヒューリスティックは、最善解にはたどり着ける保証はないが、そこそこの計算量でそこそこの良い解を得られる方法のことです。ヒューリスティック探索の単純な例として山登り法が挙げられます。焼きなまし法と呼ばれるヒューリスティック探索は、山登り法を改良したものです。ゲーム解法は、ゲームにおける自分の手を決めるための手法です。手を決めるときの考え方として、ミニマックス法があります。ミニマックス法では、自分は自分の利益が最大になるように、相手は自分の利益が最小になるように行動するという前提で、自分の利益が最大となるように手を選びます。ミニマックス法のゲーム木を枝刈りする探索方法として、αβ法があります。
より個別のタスクに近いデータ解析手法として、自然言語処理、連続データ解析、音声認識、画像からの物体検出があります。連続データ分析では、隠れマルコフモデル(HMM)、条件付き確率場(CRF)といった概念が登場します。
ニューラルネットワークはヒトの神経細胞ネットワークを模すことにより、人工知能を作ろうというアイディアで生まれた手法です。ニューラルネットワークでは、入力層から出力層までの間に何層か中間層が挟まっています。多くの中間層をもつネットワークを使って、学習を行う手法がディープラーニングです。ディープラーニングの中には、RNNやCNNといった種類のネットワークが含まれています。
強化学習は、タスクを成功させたときの報酬を用意して、エージェントの試行錯誤により、学習を進める手法のことです。
以上で、機械学習やデータ解析の基本的な手法を概観しました。『PythonによるAIプログラミング入門』のコードを実装して動かし、理解を深めたいです。そして、現実世界の実際の問題で活用してみたいです。本日もお読みくださりありがとうございました。