なっとく!AIアルゴリズム
翔泳社
著者:Rishal Hurbans
翻訳:株式会社クイープ
監修:株式会社クイープ
まえがき
謝辞
本書について
著者紹介
第1章 人工知能を直観的に理解する
1.1 人工知能とは何か
1.1.1 AI の定義
1.1.2 AI アルゴリズムの中心にあるデータを理解する
1.1.3 レシピとしてのアルゴリズム
1.2 人工知能の略史
1.3 問題の種類と問題解決のパラダイム
1.3.1 探索問題:解への経路を見つける
1.3.2 最適化問題:適切な解を見つける
1.3.3 予測問題と分類問題:データのパターンから学習する
1.3.4 クラスタリング問題:データからパターンを特定する
1.3.5 決定論的モデル:計算結果は常に同じ
1.3.6 確率論的モデルと確率的モデル:計算結果は常に同じではない
1.4 人工知能の概念を直観的に理解する
1.4.1 特化型知能:用途が限られたソリューション
1.4.2 汎用知能:人間的なソリューション
1.4.3 超知能:未知なる世界
1.4.4 古い AI と新しい AI
1.4.5 探索アルゴリズム
1.4.6 生物学にヒントを得たアルゴリズム
1.4.7 機械学習
1.4.8 ディープラーニング
1.5 人工知能アルゴリズムの用途
1.5.1 農業:最適な作物の栽培
1.5.2 バンキング:不正検知
1.5.3 サイバーセキュリティ:攻撃の検知と対処
1.5.4 医療:患者の診断
1.5.5 物流:経路探索と最適化
1.5.6 電気通信:ネットワークの最適化
1.5.7 ゲーム:AI エージェントの作成
1.5.8 芸術:傑作を描く
本章のまとめ
第2章 探索の基礎
2.1 計画と探索
2.2 計算のコスト:スマートアルゴリズムの意義
2.3 探索アルゴリズムに適用できる問題
2.4 状態を表現する:問題空間と解を表すフレームワークの作成
2.4.1 グラフ:探索問題と解の表現
2.4.2 グラフを具体的なデータ構造として表す
2.4.3 木:探索解を表すために使われる具体的な構造
2.5 知識なし探索:盲目的な解の探索
2.6 幅優先探索:深さよりも幅を優先する探索
2.7 深さ優先探索:幅よりも深さを優先する探索
2.8 知識なし探索アルゴリズムのユースケース
2.9 補足情報:グラフの種類について
2.10 補足情報:グラフを表すその他の方法
2.10.1 接続行列
2.10.2 隣接リスト
本章のまとめ
第3章 知的探索
3.1 ヒューリスティクスの定義:知識に基づく推測
3.2 知識あり探索:ガイダンスに従って解を求める
3.2.1 A* 探索
3.2.2 知識あり探索アルゴリズムのユースケース
3.3 敵対探索:変化する環境で解を求める
3.3.1 単純な敵対問題
3.3.2 min-max 探索:行動をシミュレートし、最良の未来を選ぶ
3.3.3 アルファベータ法:妥当なパスだけを探索することによる最適化
3.3.4 敵対探索アルゴリズムのユースケース
本章のまとめ
第4章 進化的アルゴリズム
4.1 進化とは何か
4.2 進化的アルゴリズムに適用できる問題
4.3 遺伝的アルゴリズム:ライフサイクル
4.4 解空間をコード化する
4.4.1 バイナリエンコーディング:候補解を 0 と 1 で表す
4.5 解の個体群を作成する
4.6 各個体の適合度を計測する
4.7 親を適合度に基づいて選択する
4.7.1 定常状態モデル:世代ごとに個体群の一部を置き換える
4.7.2 世代交代モデル:世代ごとに個体群全体を置き換える
4.7.3 ルーレット方式:親と生き延びる個体を選択する
4.8 親から個体を繁殖させる
4.8.1 一点交叉:それぞれの親から 1 つの部分を受け継ぐ
4.8.2 二点交叉:それぞれの親から複数の部分を受け継ぐ
4.8.3 一様交叉:各親からさまざまな部分を受け継ぐ
4.8.4 バイナリエンコーディングでのビット列の突然変異
4.8.5 バイナリエンコーディングでのビット反転の突然変異
4.9 次の世代を選択する
4.9.1 探索と活用
4.9.2 終了条件
4.10 遺伝的アルゴリズムのパラメータを設定する
4.11 遺伝的アルゴリズムのユースケース
本章のまとめ
第5章 高度な進化的アプローチ
5.1 進化的アルゴリズムのライフサイクル
5.2 別の選択方式
5.2.1 ランク選択:条件を公平にする
5.2.2 トーナメント選択:競わせる
5.2.3 エリート選択:最もよい個体だけを選択する
5.3 実数値エンコーディング:実数を扱う
5.3.1 実数値エンコーディングの基礎
5.3.2 算術交叉:計算による繁殖
5.3.3 境界突然変異
5.3.4 算術突然変異
5.4 順序エンコーディング:シーケンスを扱う
5.4.1 適合度関数の重要性
5.4.2 順序エンコーディングの基礎
5.4.3 順序突然変異:順序(順列)エンコーディング
5.5 木構造エンコーディング:階層を扱う
5.5.1 木構造エンコーディングの基礎
5.5.2 木交叉:木の一部を継承する
5.5.3 ノード変更突然変異:ノードの値を変更する
5.6 一般的な進化的アルゴリズム
5.6.1 遺伝的プログラミング
5.6.2 進化的プログラミング
5.7 進化的アルゴリズムの用語集
5.8 進化的アルゴリズムの他のユースケース
本章のまとめ
第6章 群知能:蟻
6.1 群知能とは何か
6.2 蟻コロニー最適化に適用できる問題
6.3 状態の表現:経路と蟻をどのように表すか
6.4 蟻コロニー最適化アルゴリズムのライフサイクル
6.4.1 フェロモンの痕跡を初期化する
6.4.2 蟻の個体群を作成する
6.4.3 各蟻が次に訪れるアトラクションを選択する
6.4.4 フェロモンの痕跡を更新する
6.4.5 最適解を更新する
6.4.6 終了条件を決める
6.5 蟻コロニー最適化アルゴリズムのユースケース
本章のまとめ
第7章 群知能:粒子
7.1 粒子群最適化とは何か
7.2 より技術的な観点から見た最適化問題
7.3 粒子群最適化に適した問題
7.4 状態の表現:粒子はどのように表されるか
7.5 粒子群最適化のライフサイクル
7.5.1 粒子の個体群を初期化する
7.5.2 各粒子の適合度を計算する
7.5.3 各粒子の位置を更新する
7.5.4 終了条件を決める
7.6 粒子群最適化アルゴリズムのユースケース
本章のまとめ
第8章 機械学習
8.1 機械学習とは何か
8.2 機械学習に適用できる問題
8.2.1 教師あり学習
8.2.2 教師なし学習
8.2.3 強化学習
8.3 機械学習のワークフロー
8.3.1 データの収集と理解:コンテキストを知る
8.3.2 データの前処理
8.3.3 モデルの訓練:線形回帰による予測
8.3.4 モデルのテスト:モデルの正解率を求める
8.3.5 正解率の改善
8.4 決定木による分類
8.4.1 分類問題:これ?.それともこれ?
8.4.2 決定木の基礎
8.4.3 決定木を訓練する
8.4.4 決定木を使ってインスタンスを分類する
8.5 よく知られているその他の機械学習アルゴリズム
8.6 機械学習アルゴリズムのユースケース
本章のまとめ
第9章 人工ニューラルネットワーク
9.1 人工ニューラルネットワークとは何か
9.2 パーセプトロン:ニューロンの表現
9.3 人工ニューラルネットワークを定義する
9.4 順伝播:訓練済みの人工ニューラルネットワークを使う
9.5 逆伝播:人工ニューラルネットワークを訓練する
9.5.1 フェーズ A:セットアップ
9.5.2 フェーズ B:順伝播
9.5.3 フェーズ C:訓練
9.6 活性化関数の選択肢
9.7 人工ニューラルネットワークを設計する
9.7.1 入力と出力
9.7.2 隠れ層と隠れノード
9.7.3 重み
9.7.4 バイアス
9.7.5 活性化関数
9.7.6 コスト関数と学習率
9.8 人工ニューラルネットワークの種類とユースケース
9.8.1 畳み込みニューラルネットワーク
9.8.2 リカレントニューラルネットワーク
9.8.3 敵対的生成ネットワーク
本章のまとめ
第10章 Q学習による強化学習
10.1 強化学習とは何か
10.1.1 強化学習の起源
10.2 強化学習に適用できる問題
10.3 強化学習のライフサイクル
10.3.1 シミュレーションとデータ:環境をセットアップする
10.3.2 シミュレーションと訓練:Q 学習を使う
10.3.3 シミュレーションとテスト:Q テーブルを使ってテストする
10.3.4 訓練の性能を計測する
10.3.5 モデルフリー学習とモデルベース学習
10.4 ディープラーニングによる強化学習
10.5 強化学習のユースケース
本章のまとめ
索引