1. G検定
1.1. 人工知能とは
1.1.1. 人工知能とは
1.1.1.1. AI (Artifical Inteligence)
1.1.1.2. 推論・認識・判断が人間と同等な知的処理能力を持つ機械
1.1.1.2.1. 「知性」や「知能」の定義が研究者によって異なる
1.1.1.2.2. 一般人のイメージはさらに曖昧
1.1.1.3. 大まかな分類
1.1.1.3.1. レベル1:シンプルな制御プログラム
1.1.1.3.2. レベル2:古典的な人工知能
1.1.1.3.3. レベル3:機械学習を取り入れた人工知能
1.1.1.3.4. レベル4:ディープラーニングを取り入れた人工知能
1.1.1.4. 人工知能とロボットの違い
1.1.1.4.1. ロボットの脳にあたる部分が「人工知能」
1.1.1.5. AIの研究が進むと人間の面白い特徴というのも見える
1.1.1.5.1. その中の一つが
1.1.1.5.2. AI効果
1.1.2. 人工知能研究の歴史
1.1.2.1. 始まり
1.1.2.1.1. 世界初の汎用コンピュータの誕生
1.1.2.1.2. 人工知能という言葉の誕生
1.1.2.2. 第一次AIブーム:推論・探索の時代
1.1.2.2.1. 1950年代〜1960年代
1.1.2.2.2. 特定の問題に対して解が提示できるようになった
1.1.2.2.3. 複雑な現実の問題は解けない
1.1.2.2.4. ブーム去る
1.1.2.3. 第二次AIブーム:知識の時代
1.1.2.3.1. 1980年代
1.1.2.3.2. コンピュータに「知恵」を入れると賢くなる!
1.1.2.3.3. DBに大量の専門知識を溜め込む
1.1.2.3.4. 日本でも政府プロジェクトが
1.1.2.3.5. 知識を蓄積・管理することが大変ということに気がつく
1.1.2.3.6. ブーム去る
1.1.2.4. 第三次AIブーム:機械学習・特徴表現学習の時代
1.1.2.4.1. 2010年ごろ〜なう
1.1.2.4.2. ビッグデータを用いる
1.1.2.4.3. 知識を定義する要素を人工知能自ら習得する
1.2. 人工知能をめぐる動向
1.2.1. 探索・推論
1.2.1.1. 迷路
1.2.1.1.1. コンピュータが処理できるような形式に変換してあげる
1.2.1.1.2. 分岐があるところと行き止まりのところに記号をつける
1.2.1.1.3. SからGにたどり着く経路がみつかれば、それが答え
1.2.1.1.4. 探索の手法
1.2.1.2. ハノイの塔
1.2.1.2.1. パズル
1.2.1.2.2. このパズルも探索木を使うことで全ての円盤を右のポールに写すことができる
1.2.1.2.3. パターンを総アタックして解決する
1.2.1.3. ロボットの行動計画
1.2.1.3.1. 探索を利用する
1.2.1.3.2. プランニング
1.2.1.3.3. 積み木の世界
1.2.1.4. ボードゲーム
1.2.1.4.1. AlphaGo(アルファ碁)
1.2.1.4.2. ボードゲームのパターン出しすると天文学的数字になる
1.2.1.4.3. 効率よく探索する必要あり
1.2.1.4.4. モンテカルロ法
1.2.2. 知識表現
1.2.2.1. 人工無能
1.2.2.1.1. チャットボット・おしゃべりボットなど
1.2.2.1.2. 特定のルールに沿って会話を機械的に処理する
1.2.2.1.3. ELIZA(イライザ)
1.2.2.2. エキスパートシステム
1.2.2.2.1. 専門分野の知識を取り込み、その分野の専門家のように振る舞うプログラム
1.2.2.2.2. マイシン(MYCIN)
1.2.2.2.3. DENDRAL
1.2.2.3. 知識獲得のボトルネック (エキスパートシステムの限界)
1.2.2.3.1. たくさんの知識が必要
1.2.2.3.2. 人間の専門家から得るのが大変
1.2.2.3.3. 知識獲得のための専用システムについても研究が行われた
1.2.2.4. 意味ネットワーク
1.2.2.4.1. semantic network
1.2.2.4.2. 「概念」をラベル付きノードで表し、概念間をリンクしたネットワーク
1.2.2.4.3. 「is - a」の関係
1.2.2.4.4. 「part - of」の関係
1.2.2.5. Cycプロジェクト
1.2.2.5.1. エキスパートシステムが活躍するには膨大な知識が必要
1.2.2.5.2. 全ての一般常識をコンピュータに取り組もうという取り組み
1.2.2.5.3. 1984年にダグラス・レナートさんによってスタート
1.2.2.5.4. 広い範囲に及ぶ常識をコンピュータにINPUT
1.2.2.5.5. 今も続いている・・・
1.2.2.6. オントロジー
1.2.2.6.1. 概念体系を記述するための方法論
1.2.2.6.2. エキスパートシステムのための知識の開発と保守にはコストがかかる
1.2.2.6.3. そこでオントロジー
1.2.2.6.4. 目的は知識の共有と活用
1.2.2.7. 概念間の関係
1.2.2.7.1. is-a と part-of の関係
1.2.2.7.2. 「is-a」の関係
1.2.2.7.3. 「part-of」の関係
1.2.2.8. ワトソン
1.2.2.8.1. IBMが開発
1.2.2.8.2. クイズ番組でチャンピオンを倒した
1.2.2.8.3. wikipediaの情報を元にライトウェイトオントロジーを生成
1.2.2.8.4. まず、質問を分析
1.2.2.8.5. 解答候補を複数選ぶ
1.2.2.8.6. 関連度の総合点をつける
1.2.2.8.7. 一番点数が高いのが答え(の確率が高い)
1.2.2.8.8. つまり
1.2.2.9. オントロジーの構築
1.2.2.9.1. ヘビーウェイトオントロジー(重量オントロジー)
1.2.2.9.2. ライトウェイトオントロジー(軽量オントロジー)
1.2.3. 機械学習・深層学習
1.2.3.1. 機械学習
1.2.3.1.1. 人工知能プログラム自身が学習する仕組み
1.2.3.1.2. サンプルデータが多ければ多いほど望ましい学習結果が得られる
1.2.3.1.3. もともとは文字認識などのパターン認識の分野で蓄積されてきた技術
1.2.3.1.4. インターネットで急速に成長
1.2.3.1.5. 実用化できるレベルに
1.2.3.1.6. 統計的自然言語処理
1.2.3.2. ニューラルネットワーク
1.2.3.2.1. 機械学習のひとつ
1.2.3.2.2. 人間の神経回路を真似している
1.2.3.2.3. 単純パーセプトロン
1.2.3.3. ディープラーニング(深層学習)
1.2.3.3.1. ニューラルネットワークを多層にしたもの
1.2.3.3.2. 簡単に実現するように見えたが、最初はうまくいかなかった
1.2.3.3.3. バックプロパゲーション(誤差逆伝播学習法)
1.2.3.3.4. 自己符号化器
1.2.3.4. ディープラーニングの登場による影響
1.2.3.4.1. 時代を切り開く、ある出来事が
1.2.3.4.2. 従来、特徴量を決めるのは人間だった
1.3. 人工知能分野の問題
1.3.1. トイ・プロブレム
1.3.1.1. 本質を損なわない程度に問題を簡略化したもの(コンピュータでも扱えるように)
1.3.1.2. 非常に限定された状況で設定された問題
1.3.1.2.1. チェス
1.3.1.2.2. 将棋
1.3.1.2.3. 迷路
1.3.1.2.4. パズル
1.3.1.2.5. など・・・
1.3.1.3. 人工知能ではそのような問題しか解けないのが少しづつ明らかに・・・
1.3.2. フレーム問題
1.3.2.1. 1969年に提唱されて、未だに本質的な解決をされていない問題
1.3.2.1.1. ジョン・マッカーシー/パトリック・ヘイズ
1.3.2.2. 人工知能最大の難問
1.3.2.3. 今しようとしていることに関係のあることだけを選び出すことが非常に困難
1.3.2.4. ロボットの例
1.3.2.4.1. 洞窟の中に台車があって、その上にロボットを動かすバッテリーが乗っている
1.3.2.4.2. ただし、台車の上には同時に爆弾が仕掛けられている
1.3.2.4.3. ロボットは動くためにバッテリーが必要
1.3.2.4.4. 洞窟にバッテリーを取りに行くように命じる
1.3.2.5. 人間の場合も・・・
1.3.2.5.1. 何も考えずに行動して思いもよらない事故を起こす
1.3.2.5.2. その場で取るべき行動にとまどってしまう
1.3.2.5.3. 行動を起こす前に考えすぎて何もできない
1.3.2.5.4. ただし
1.3.3. チューリングテスト
1.3.3.1. 人工知能が完成したかどうかを判定する方法
1.3.3.1.1. アラン・チューリングが考えた
1.3.3.2. 別の場所にいる人間がコンピュータと会話して
1.3.3.3. その人がコンピュータだと見抜けなければ
1.3.3.4. コンピュータには知能があるものとする
1.3.3.5. ローブナーコンテスト
1.3.3.5.1. チューリングテストをパスするソフトウェアを目指すコンテスト(毎年開催される)
1.3.3.6. まだチューリングをパスできるレベルには到達していない
1.3.4. 強いAIと弱いAI
1.3.4.1. 言葉登場の歴史
1.3.4.1.1. 1980年に発表された論文 「Minds, Brains, and Programs(脳、心、プログラム)」で登場
1.3.4.1.2. ジョン・サール著
1.3.4.2. 強いAI
1.3.4.2.1. 適切にプログラムされたコンピュータは人間が心を持つのと同じ意味で心を持つ
1.3.4.2.2. プログラムそれ自身が人間の認知の説明
1.3.4.2.3. つまり
1.3.4.3. 弱いAI
1.3.4.3.1. コンピュータは人間の心を持つ必要はない
1.3.4.3.2. 有用な道具であればよい
1.3.4.3.3. つまり
1.3.4.4. 中国語の部屋
1.3.4.4.1. 箱の中に英語しかわからない人と中国語の質問に答えられる完璧なマニュアルを入れておく
1.3.4.4.2. 中国語の指示をマニュアル通りに置き換えることで
1.3.4.4.3. 部屋の外の人は部屋の中の人が中国語を理解していると思う
1.3.4.4.4. でも実際は
1.3.5. シンボルグラウンディング問題
1.3.5.1. 記号(シンボル)とその対象がいかに結びつくかという問題
1.3.5.1.1. フレーム問題と同じく人工知能の難問
1.3.5.2. シマウマ
1.3.5.2.1. 人間の場合
1.3.5.2.2. コンピュータの場合
1.3.6. 身体性
1.3.6.1. 知識が成立するためには身体が不可欠という考え方
1.3.6.1.1. 人間の身体には隅々まで神経が張り巡らされている
1.3.6.1.2. これらを通じて世界を感じる
1.3.6.1.3. その情報は膨大で複合的なもの
1.3.6.1.4. 得られた知識に対して「シマ」とか「ウマ」とかの記号の対応づけを行う
1.3.6.1.5. 体を通じて得た感覚と文字などの記号を結びつけて世界を認識する
1.3.7. 知識獲得のボトルネック
1.3.7.1. コンピュータが知識を獲得することが難しいということ
1.3.7.2. 機械翻訳
1.3.7.2.1. 1970年代後半はルールベース機械翻訳が一般的だった
1.3.7.2.2. 1990年からは統計的機械翻訳が主流になった
1.3.7.2.3. コンピュータが「意味」を理解できないことから実用レベルではなかった
1.3.7.2.4. He saw a woman in the garden with a telescope
1.3.7.2.5. 1つの文を訳すのも一般常識がないと訳せない
1.3.7.2.6. ニューラル翻訳
1.3.8. 特徴量設計
1.3.8.1. 「注目すべきデータの特徴」の選び方
1.3.8.2. 機械学習は与えられた特徴量を利用するだけ
1.3.8.3. 特徴量の選択は人間が行う
1.3.8.4. 正しい特徴量を見つけ出すのは非常に難しい
1.3.8.4.1. 画像の中から車を見つけたい場合
1.3.8.4.2. タイヤの存在を特徴量として使うことを検討
1.3.8.4.3. 角度、サイズ、昼夜の写りかたの違い
1.3.8.4.4. 解決が難しい問題がいくつもある
1.3.8.5. 人間が見つけるのが難しいなら、機械学習自身に発見させよう
1.3.8.5.1. 特徴表現学習
1.3.8.6. ディープラーニングは「特徴表現学習」を行う機械学習アルゴリズムのうちのひとつ
1.3.9. シンギュラリティー
1.3.9.1. 技術的特異点
1.3.9.1.1. 人工知能が自分よりも賢い人工知能を作るようになった瞬間、無限に知能の高い存在を作る
1.3.9.1.2. 人間の想像力の及ばない超越的な知性が誕生する
1.3.9.1.3. という仮説
1.3.9.1.4. 人工知能が人間よりも賢くなる年という使われかたも多い
1.3.9.2. そもそも「特異点」の意味
1.3.9.2.1. ある基準が適用できなくなる点
1.3.9.2.2. 例えばブラックホール
1.3.9.3. シンギュラリティーを迎えて以降のことはわからない
1.3.9.3.1. Googleは社内に人工知能に関する倫理委員会を作成
1.3.9.3.2. 日本人工知能学会でも倫理委員会を設置
1.4. 機械学習の具体的手法
1.4.1. 学習の種類
1.4.1.1. どのような課題を解きたいかによってアプローチが異なる
1.4.1.2. 個別の課題は千差万別だが課題の構造は共通であることがほとんど
1.4.1.3. 機械学習の種類は3つ
1.4.1.3.1. 教師あり学習
1.4.1.3.2. 教師なし学習
1.4.1.3.3. 強化学習
1.4.2. 教師あり学習の代表的な手法
1.4.2.1. 線形回帰
1.4.2.1.1. 最もシンプルなモデル
1.4.2.1.2. 回帰問題に用いる
1.4.2.1.3. データの分布があったらそのデータに最も当てはまる直線を考える
1.4.2.1.4. 正則化を加えた手法として
1.4.2.1.5. 単回帰分析
1.4.2.1.6. 重回帰分析
1.4.2.2. ロジスティック回帰
1.4.2.2.1. 分類問題に用いる
1.4.2.2.2. 回帰と書いてあるが、回帰問題で用いる手法ではない
1.4.2.2.3. 必ず予想結果が0から1の範囲に収まる
1.4.2.2.4. 2種類の分類
1.4.2.2.5. 複数種類の分類
1.4.2.3. ランダムフォレスト
1.4.2.3.1. 決定木を用いて結果を出力する
1.4.2.3.2. 複数の特徴量ごとに決定木を作成する
1.4.2.3.3. どの特徴量(決定木)を採用するか・・・ランダムでいくつかのパターンを採用する
1.4.2.3.4. 学習に使うデータも全てを使うわけではなく、ランダムに一部のデータを取り出して学習に用いる
1.4.2.3.5. それぞれの結果の多数決で最終的な出力を決定する
1.4.2.4. ブースティング
1.4.2.4.1. 一部のデータを繰り返し抽出して複数のモデルを学習させる
1.4.2.4.2. バッキングとの違い
1.4.2.4.3. ブースティングの流れ
1.4.2.4.4. 有名なものとして
1.4.2.4.5. 逐次的に学習を進めるのでランダムフォレストのモデルよりも制度がいい
1.4.2.4.6. 並列処理ができないので学習に時間がかかる
1.4.2.5. サポートベクターマシン(SVM)
1.4.2.5.1. 高度な数学的理論に支えられた手法
1.4.2.5.2. ディープラーニング以前で最も人気のあった手法
1.4.2.5.3. コンセプト
1.4.2.5.4. 実際やろうとすると結構難しい
1.4.2.6. ニューラルネットワーク
1.4.2.6.1. 人間の脳の構造を模したアルゴリズム
1.4.2.6.2. 単純パーセプトロン
1.4.2.6.3. 多層パーセプトロン
1.4.2.7. K近傍法(KNN)
1.4.2.7.1. K Nearest Neighbor
1.4.2.7.2. 学習データをベクトル空間上にプロットしておく
1.4.2.7.3. 未知のデータが得られたら、そこから距離が近い順に任意のK個を取得
1.4.2.7.4. 多数決でデータが属するクラスを推定する
1.4.3. 教師なし学習の代表的な手法
1.4.3.1. k-means(k平均法)
1.4.3.1.1. k-meansを用いた分析のことをクラスタ分析という
1.4.3.1.2. データをk個のグループに分けることを目的としている
1.4.3.1.3. 元のデータからグループ構造を見つけ出し、それをまとめる
1.4.3.1.4. アプローチ方法
1.4.3.2. 主成分分析
1.4.3.2.1. Principal Component Analysis, PCA
1.4.3.2.2. データの特徴量間の関係性を分析する
1.4.3.2.3. これによって構造をつかむ手法
1.4.3.2.4. 特に特徴量が多い場合に用いられる
1.4.3.2.5. 目的
1.4.4. 手法の評価
1.4.4.1. データの扱い
1.4.4.1.1. それぞれの手法を試す場合は予測性能を評価する必要がある
1.4.4.1.2. 目的を再確認
1.4.4.1.3. 問題
1.4.4.1.4. 交差検証
1.4.4.2. 評価指標
1.4.4.2.1. 10,000枚のイヌ、オオカミ画像を用いて、別の2,000枚の画像がイヌかオオカミかを予想する
1.4.4.2.2. 訓練データ10,000枚、テストデータ2,000枚
1.4.4.2.3. 予測値と実際の値は4通りある
1.4.4.2.4. 代表的な指標
1.4.4.3. オーバーフィッティング
1.4.4.3.1. 訓練データにのみ最適化されすぎてしまっている状態
1.4.4.3.2. 防ぐためのテクニック
1.4.4.3.3. よく用いられる正則化
1.5. ディープラーニングの概要
1.5.1. ニューラルネットワークと ディープラーニング
1.5.1.1. ディープラーニングの基本
1.5.1.1.1. ディープラーニングは多層構造のニューラルネットワークの機械学習
1.5.1.1.2. 多層パーセプトロン
1.5.1.1.3. ディープラーニング
1.5.1.2. 既存ニューラルネットワークの問題
1.5.1.2.1. ネットワークが深いと誤差逆伝播法が正しく反映されない
1.5.1.2.2. なんで?
1.5.1.2.3. 隠れ層を増やすと複雑な関数を作ることができる
1.5.1.2.4. 実現に向けてはアイデアが必要だった
1.5.2. ディープラーニングのアプローチ
1.5.2.1. 事前学習によるアプローチ
1.5.2.1.1. 理想と現実にギャップがあったので、ニューラルネットワークはしばらく下火となっていた
1.5.2.1.2. 2006年トロント大学のジェフリー・ヒントンがオートエンコーダを提唱するまでは
1.5.2.1.3. オートエンコーダ
1.5.2.1.4. 積層オートエンコーダ
1.5.2.1.5. 教師あり学習の積層オートエンコーダ
1.5.2.1.6. ファインチューニング
1.5.2.1.7. 深層信念ネットワーク
1.5.2.2. 事前学習なしのアプローチ
1.5.2.2.1. 最近の手法では事前学習は見かけない
1.5.2.2.2. 事前学習なしで一気にネットワーク全体を学習する手法が考えられたため
1.5.2.2.3. 事前学習は有用な手法であった
1.5.2.2.4. 事前学習の目的
1.5.2.2.5. 仮にネットワーク全体を一気に学習して同じ結果が得られるなら
1.5.2.2.6. 勾配消失問題
1.5.2.2.7. 事前学習は有用な手法であった
1.5.3. ディープラーニングを実現するには
1.5.3.1. 演算装置について
1.5.3.1.1. ハードウェアの進歩
1.5.3.1.2. ムーアの法則
1.5.3.1.3. コンピュータには
1.5.3.1.4. GPUとディープラーニング
1.5.3.2. ディープラーニングのデータ量
1.5.3.2.1. ディープラーニングは機械学習のひとつ
1.5.3.2.2. ディープラーニングに限らず、機械学習には
1.5.3.2.3. 「この問題にはこれだけデータがあればよい」という明確に決まった数字はない
1.5.3.2.4. 扱う問題が単純なら少ないデータ量
1.5.3.2.5. 扱う問題が複雑なら大量のデータが必要
1.5.3.2.6. データ量の目安となる経験則は存在する
1.6. ディープラーニングの手法
1.6.1. 活性化関数
1.6.1.1. ディープニューラルネットワークに誤差逆伝播すると勾配が消失してしまう
1.6.1.1.1. 原因は活性化関数のシグモイド関数の微分の最大値(前述)
1.6.1.2. 前提として大事なこと
1.6.1.2.1. 出力層で確率を表現したい場合
1.6.1.2.2. シグモイド関数
1.6.1.2.3. or
1.6.1.2.4. ソフトマックス関数
1.6.1.2.5. を用いないと表現できない
1.6.1.2.6. なので、変えることはできない
1.6.1.3. 隠れ層で任意の実数を非線形に変換することができる関数であれば、特にどんな関数であろうと問題ない
1.6.1.4. 活性化関数が微分できないと逆伝播法を用いることはできない
1.6.1.4.1. ただし、それ以外の制約はない
1.6.1.5. tanh関数
1.6.1.5.1. tanh(ハイパボリックタンジェント)
1.6.1.5.2. ディープラーニングブームで活性化関数が再研究されるまでは最も有用な活性化関数
1.6.1.5.3. 課題
1.6.1.6. ReLU関数
1.6.1.6.1. Rectified Linear Unit
1.6.1.6.2. ランプ関数と呼ばれる
1.6.1.6.3. ReLu関数
1.6.1.6.4. ReLU関数の派生
1.6.2. 勾配降下法
1.6.2.1. ディープラーニングはニューラルネットワークの応用
1.6.2.2. なので、深層だろうとそうでなかろうと学習の際に行われる計算のアプローチは同じ
1.6.2.3. そもそも機械学習が目指しているものは関数の最小化
1.6.2.3.1. モデルの予測値と実際の値との誤差をなくすこと
1.6.2.3.2. 誤差を無くすというのは機械学習では数学的にアプローチする
1.6.2.3.3. 誤差である「誤差関数」を定義する
1.6.2.3.4. この誤差関数を最小化する
1.6.2.4. 関数の最小化=微分
1.6.2.4.1. 微分
1.6.2.5. 微分値が0になるような重みを求める
1.6.2.5.1. 解析的に求めるのはほぼ不可能
1.6.2.5.2. アルゴリズムを用いて最適解を探索する手法
1.6.2.6. 勾配降下法
1.6.2.6.1. 勾配に沿って降りていくことで解を探索する手法
1.6.2.6.2. 勾配=微分値
1.6.2.6.3. 例:y=xの2乗
1.6.2.6.4. 勾配降下法の式
1.6.2.7. 勾配降下法の問題と改善
1.6.2.7.1. 適切な最適解が得られないことが多々ある
1.6.2.7.2. 局所最適解を防ぐ方法
1.6.2.7.3. 3次元(以上)の問題
1.6.3. 学習のテクニック
1.6.3.1. ドロップアウト
1.6.3.1.1. 機械学習で陥りがちな問題→オーバーフィッティング
1.6.3.1.2. オーバーフィッティングを回避するテクニックの一つとしてドロップアウトがある
1.6.3.1.3. ドロップアウト
1.6.3.2. early stopping
1.6.3.2.1. 訓練データを用いて誤差を最小化する以上、オーバーフィッティングは避けられない
1.6.3.2.2. early stopping
1.6.3.3. データの正規化・重みの初期化
1.6.3.3.1. 数々のテクニック
1.6.3.3.2. これらは学習の「途中」を最適化するもの
1.6.3.3.3. 正規化
1.6.3.3.4. 標準化
1.6.3.3.5. 白色化
1.6.3.3.6. データの標準化は機械学習全般に対して効果がある
1.6.3.3.7. いきなり重みの最適値は分からない
1.6.3.4. バッチ正規化
1.6.3.4.1. ディープニューラルネットワークを学習する上で各層に伝わっていくデータの分布は重要
1.6.3.4.2. もっと直接的な方法をとりたい
1.6.3.4.3. バッチ正規化 (batch normalization)
1.6.4. CNN:畳み込みニューラルネットワーク
1.6.4.1. 画像データの扱い
1.6.4.1.1. ディープラーニングの基本は隠れ層を増やしたニューラルネットワーク
1.6.4.1.2. ただ、分野によっては分野に特化したニューラルネットワークが存在する
1.6.4.1.3. 画像データ
1.6.4.1.4. 通常のニューラルネットワークでも画像データを扱うことはできる
1.6.4.1.5. 畳み込みニューラルネットワーク(CNN)
1.6.4.2. CNNの基本形
1.6.4.2.1. 始まりの歴史
1.6.4.2.2. 畳み込み(convolution)
1.6.4.2.3. プーリング
1.6.4.2.4. 全結合層
1.6.4.2.5. データ拡張
1.6.5. RNN:リカレントニューラルネットワーク
1.6.5.1. CNNの発展系
1.6.5.1.1. 画像認識において高い精度を得るために畳み込み層とプーリング層を深くしていく
1.6.5.1.2. 単純に層を深くしていくだけでは計算量が大きい
1.6.5.1.3. 工夫
1.6.5.1.4. 「超」深層になると逆に性能が落ちる
1.6.5.1.5. 工夫②
1.6.5.2. 時系列データの扱い
1.6.5.2.1. 世の中には時間依存性のあるデータがたくさんある
1.6.5.2.2. 時系列データを用いてニューラルネットワークで何かを予測しようとした場合
1.6.5.2.3. 適切に予測を行いたい場合
1.6.5.2.4. リカレントニューラルネットワーク(RNN)
1.6.5.3. RNNの基本
1.6.5.3.1. 過去の隠れた状態を学習する
1.6.5.3.2. RNN
1.6.5.3.3. LSTM
1.6.5.4. RNNの発展系
1.6.5.4.1. Bidirectional RNN
1.6.5.4.2. これまでのモデルは
1.6.5.4.3. 入力が時系列なら出力も時系列で予測したい
1.6.5.4.4. RNN Encoder-Decoder
1.6.5.4.5. Attention
1.6.6. 深層強化学習
1.6.6.1. 強化学習
1.6.6.1.1. 行動を学習する仕組み
1.6.6.1.2. よく教師あり学習と混同してしまっているケースがある
1.6.6.1.3. 教師あり学習しないでも強化学習があればうまくいくんじゃない?
1.6.6.2. 深層強化学習
1.6.6.2.1. 課題を抱えていた強化学習がディープラーニングの登場で状況が打開される
1.6.6.2.2. ディープラーニング(CNN)と強化学習を組み合わせた
1.6.6.2.3. AlphaGo(アルファ碁)
1.6.6.2.4. AlphaGo Zero
1.6.7. 深層生成モデル
1.6.7.1. 生成タスクへのアプローチ
1.6.7.1.1. 機械学習・ディープラーニング
1.6.7.1.2. なにを生成したいのか
1.6.7.2. 画像生成モデル
1.6.7.2.1. 良い成果を残すモデルが2つ
1.6.7.2.2. 変分オートエンコーダ
1.6.7.2.3. 敵対的生成ネットワーク
1.7. ディープラーニングの研究分野
1.7.1. 画像識別分野
1.7.1.1. アレックスネット(AlexNet)
1.7.1.1.1. 誕生
1.7.1.1.2. ILSVRCちょっとした話
1.7.1.2. R-CNN
1.7.1.2.1. イメージ画像認識コンテストの課題
1.7.1.2.2. R-CNN(Regional CNN)
1.7.1.2.3. 高速RCNN(fast RCNN)
1.7.1.2.4. その後の発展
1.7.1.3. セマンティックセグメンテーション と インスタンスセグメンテーション
1.7.1.3.1. セマンティックセグメンテーション
1.7.1.3.2. インスタンスセグメンテーション
1.7.2. 自然言語処理分野
1.7.2.1. 単語の意味を表現できるベクトル空間モデル
1.7.2.1.1. word2vec
1.7.2.2. 単語の意味表現から文章の意味表現へ
1.7.2.2.1. word2vecによる単語ベクトル表現を拡張して文章のベクトル表現を得る
1.7.2.2.2. word2vecの後継
1.7.2.3. ニューラル画像脚注付け(NIC)
1.7.2.3.1. 画像認識を実行するCNNと言語モデルとしてリカレントニューラルネットワークを組み合わせる
1.7.2.3.2. NICは2014年に注目を集める
1.7.2.3.3. 構造
1.7.2.4. ニューラルチューリングマシン(NTM)
1.7.2.4.1. チューリングマシンをニューラルネットワークにより実現する試み
1.7.2.4.2. 概略図
1.7.2.4.3. NTMは系列制御、時系列処理に加えて複雑な問題を解くことが可能
1.7.2.5. 自然言語処理の大まかな流れ
1.7.2.5.1. 自然言語処理とは
1.7.2.5.2. 処理の大まかな流れ
1.7.3. 音声認識
1.7.3.1. 音声認識、音声生成、テキスト読み上げ WaveNet
1.7.3.1.1. WaveNet
1.7.3.1.2. 隠れマルコフモデル
1.7.4. 強化学習(ロボティクス)
1.7.4.1. DQN(Deep Q Network)以来多数発表された
1.7.4.2. アルファ碁
1.7.4.2.1. 基盤の状況認識にCNN
1.7.4.2.2. 次の手の選択にモンテカルロ木探索
1.7.4.2.3. 成果を上げた
1.7.4.2.4. 強化学習の概略
1.7.4.3. アルファ碁ゼロ
1.7.4.3.1. さらに強くなるために
1.7.4.3.2. セルフプレイを用いる
1.7.4.4. 強化学習の性能を改善するために
1.7.4.4.1. 状況ごとに適切な意思決定をする必要あり
1.7.4.4.2. 意思決定行動を改善するためのモデルは3種類
1.7.4.4.3. それぞれの関係
1.7.4.4.4. 全部入れると
1.8. ディープラーニングの応用に向けて
1.8.1. ものづくり領域における応用事例
1.8.1.1. 不良品検出/検品
1.8.1.1.1. 製造業ではそもそも不良品が発生する頻度が少ない
1.8.1.1.2. なので
1.8.1.1.3. (大量に準備することが可能な)良品データのみから特徴を抽出
1.8.1.1.4. その特徴の差分を利用することろで不良品を検出
1.8.1.1.5. 不良品データが少ない環境下での不良品検知を実現
1.8.1.2. 予兆検知 / 予防保全
1.8.1.2.1. 熟練技術者の経験に頼り、部品交換時期などを判断するケースがある
1.8.1.2.2. 作業員の熟練度に依存しない安定した生産を目指す
1.8.1.3. バラ積みピッキング
1.8.1.3.1. 生産ライン自動化ニーズにの多様化に伴い
1.8.1.3.2. ロボットに求められる作業レベルが高速化してきた
1.8.1.3.3. 例えば
1.8.1.4. 食品製造ラインにおける不良品検出
1.8.1.4.1. 不良品の検査・仕分けは人の手で実施しているケースが多い
1.8.1.4.2. 正解不正解を判断する「分類機」アプローチではなく
1.8.1.4.3. 良品の特徴を学習して、そうでないものを弾く「異常検知アプローチ」を採用
1.8.2. モビリティ領域における応用事例
1.8.2.1. 自動運転
1.8.2.1.1. 自動運転の工程内でディープラーニング技術が活用
1.8.2.1.2. 内閣官房IT総合戦略室
1.8.2.1.3. 移動サービス(ロボットタクシー)も実証実験がされている
1.8.2.2. 診断支援
1.8.2.2.1. 特徴抽出を使って石の負担緩和と見落としリスクの軽減を目指す
1.8.2.2.2. 胃がん検出
1.8.2.2.3. 大腸がん検査支援
1.8.2.2.4. 広角眼底画像を用いた網膜剥離判定
1.8.2.3. 創薬
1.8.2.3.1. 創薬生産性向上
1.8.2.4. ゲノム
1.8.2.4.1. ゲノム解析
1.8.2.4.2. Deep Variant
1.8.2.4.3. がん罹患者ここに最適化された医療
1.8.2.4.4. ゲノム医科学用共用スーパーコンピュータ利用環境整備
1.8.3. AIと社会
1.8.3.1. 法・倫理・社会
1.8.3.1.1. 法
1.8.3.1.2. 倫理
1.8.3.1.3. ベネフィットとリスクに向き合うこと
1.8.3.1.4. プロダクトを作る工程に沿って考えるべきことを整理
1.8.3.2. プロダクトを考える
1.8.3.2.1. なぜAI、特にディープラーニングを取り入れた製品を利用したいのか
1.8.3.2.2. をまず考える必要がある
1.8.3.2.3. 最先端の技術でなくてもよい場合がある
1.8.3.2.4. ディープラーニングは
1.8.3.2.5. ディープラーニングの導入自体が目的かしてしまっていないか?
1.8.3.2.6. プライバシー・バイ・デザイン
1.8.3.2.7. セキュリティ・バイ・デザイン
1.8.3.2.8. バリュー・センシティブ・デザイン
1.8.3.3. データを集める
1.8.3.3.1. データの利用条件を確認する
1.8.3.3.2. 役割と責任を明確
1.8.3.3.3. ディープラーニング等を利用した開発
1.8.3.3.4. AI・データの利用に関する契約ガイドライン
1.8.3.3.5. データの偏りに注意
1.8.3.4. データを加工・分析・学習させる
1.8.3.4.1. プライバシーに配慮
1.8.3.4.2. アルゴリズムを調整
1.8.3.4.3. 悪用へのセキュリティ対策
1.8.3.5. 実装・運用・評価
1.8.3.5.1. 成果物を知的財産として守る
1.8.3.5.2. 利用者・データ保持者ほ保護する
1.8.3.5.3. 予期しない振る舞いに注意と対策
1.8.3.5.4. インセンティブを設計し多様な人材を巻き込む
1.8.3.6. クライシス・マネジメントをする
1.8.3.6.1. まずは言葉の意味
1.8.3.6.2. 体制を整備
1.8.3.6.3. 有事に対応