【AI入門・G検定】JDLA Deep Learning for GENERAL 2018#1 推薦図書キーワードまとめ

[2019/6/10 追記]
まとめと言っておきながらめちゃめちゃ量が多いので、これはカンペ代わりに使ってもらうのがいいような気がします。（少なくとも僕のときは試験中のGoogle検索はできました）

=== 以下本文 ===

2018年6月、JDLA（日本ディープラーニング協会）JDLA Deep Learning for GENERAL 2018 #1という検定を受験してきました。（合格しました！わーい！）
この検定は2017年12月にスタートしたもので、今回で2回目の試験となります。

資格の概要はこんな感じ。
![スクリーンショット 2018-06-24 1.42.02.png](https://qiita-image-store.s3.amazonaws.com/0/178137/ba0121c3-ec9c-5e67-2803-15203c43fdf2.png)



ジェネラリスト（G検定）向けと、エンジニア（E資格）向けの2種類の試験が存在しており、G検定では人工知能の歴史からディープラーニングへの幅広い知識が求められます。
合格率は第1回が56.8%、第2回が57.1%となっているので、合格するのはそこまで難しくないのかなといった感じですね。

合格して何になるの？ってとこは正直まだ未知数なんですが、超網羅的なAIの基礎知識から、様々なニューラルネットワークの構造や特徴を学べたので、実際に開発するときには非常に有効活用できそうです。

で、今回はG検定を受験するときに僕が使った、推薦図書を網羅的にまとめたメモを公開します。

ただ、試験には推薦図書以外からもバンバン出題されますので、ここに書いてある知識は最低限として覚えて、試験に望むようにしてください！
※自分用に作っていたものを記事にしたので、説明不足やタイポがあるかと思います。ご容赦ください。


# 推薦図書について
http://www.jdla.org/business/certificate/#suisen

「深層学習」の代わりに、オライリーの「ゼロから始めるディープラーニング」を読んでこの記事を作成しています。
そのため、「深層学習」の内容は含まれておりませんので、ご了承ください。


# 人工知能の概要
## 人工知能の定義
  - 中島秀之氏（公立はこだて未来大学）
    - 人工的につくられた、知能を持つ実体。あるいはそれをつくろうとすることによって知能自体を研究する分野である。
  - 山川宏氏（ドワンゴ人工知能研究所所長）
    - 計算機知能のうちで、人間が直接・間接に設計する場合を人工知能と呼んでよいのではないかと思う。
  - 松尾豊氏（東京大学大学院工学系研究科准教授）
    - 人工的につくられた人間のような知能、ないしはそれをつくる技術。

## 人工知能を巡る動向
### 人工知能 VS 人間
  - チェス
    - 1997年、「Deep Blue」に敗れる
  - クイズ
    - 2011年、IBMの「ワトソン」がアメリカのクイズ番組で優勝
  - 将棋
    - 2012年、元名人の米長邦雄氏が、「ボンクラーズ」に敗れる

### ILSVRC（ImageNet Large Scale Visual Recognition Challenge）
  - 2012年、トロント大学のSuper Vision（AlexNet）が優勝し、ディープラーニングを使って圧倒的な勝利をおさめる
  - 2013年、Clarifaiが優勝
  - 2014年、GoogleNet（インセプションモジュール）が優勝、VGGが第2位となる
  - 2015年、ResNet「残渣ネット」（Residual Network）が優勝し、画像認識分野において人間の成績を上回った
  - 2016年、ResNetの変形によるショートカット付き多層化CNNモデルで、領域切り出しネットワーク（Region Proposal Network）、超高速領域CNNを複数合議制（アンサンブル）で精度向上を実現

### シンギュラリティ（技術的特異点）への驚異
  - レイ・カーツワイル氏
    - 2045年までにシンギュラリティに到達すると提唱
  - スティーブン・ホーキング氏
    - 「完全な人工知能を開発できたら、それは人類の終焉を意味するかもしれない」
    - 「人工知能の発明は人類史上最大の出来事だった。だが同時に、『最後』の出来事になってしまう可能性もある」
  - イーロン・マスク氏
    - 「人工知能にはかなり慎重に取り組む必要がある。結果的に悪魔を呼び出していることになるからだ。」
    - 「ペンタグラムと聖水を手にした少年が悪魔に立ち向かう話をみなさんご存知だろう。彼は必ず悪魔を支配できると思っているが、結局できはしないのだ」
  - ビル・ゲイツ氏
    - 「私も人工知能に懸念を抱く側にいる一人だ」

### GoogleによるAI技術開発の原則
  - 社会にとって有益である
  - 不公平なバイアスの発生、助長を防ぐ
  - 安全性確保を念頭においた開発と試験
  - 人々への説明責任
  - プライバシー・デザイン原則の適用
  - 科学的卓越性の探求
  - これらの基本理念に沿った利用への技術提供

## 人工知能の種類
### 人工知能のレベル
  - レベル1 単純な制御プログラム（アルバイト）
    - 厳格なルールを定め、その通りに動くだけ
    - 一般的なプログラムと何ら変わりない
  - レベル2 推論・探索、あるいは知識を使った古典的な人工知能（一般社員）
    - 推論・探索を行ったり、知識を投入しているため、入力と出力を関係づける方法が洗練されている
    - 将棋や掃除ロボット、あるいは質問に答えられるもの
  - レベル3 機械学習（課長）
    - サンプルとなるデータをもとに、ルールや知識を自ら学習していくもの
    - 検索エンジンに使われたり、ビッグデータをもとに自動で判断を行うような人工知能
  - レベル4 ディープラーニング（マネージャー）
    - 特徴表現学習を行なうことができ、ビッグデータから特徴量を自動で学習する

### 強いAIと弱いAI
  - 強いAI
    - 「正しい入力と出力を備え、適切にプログラムされたコンピュータは、人間が心を持つのと同じ意味で、心を持つ」
    - 人間のように物事を認識し、人間のように仕事を行なう行う、あたかも人間のような自意識を備えているAI
  - 弱いAI
    - 心を持つ必要はなく、限定された知能によって一見知的な問題解決が行えればよいとする立場。
    - 人間の知能の一部を代替するが、あくまで「機械的」な存在

### 特化型と汎用型
#### 特化型
  - 特定の決まった作業を遂行するためのもの
  - 自動運転、画像認識、将棋やチェス、対話

#### 汎用型（Artificial General Intelligence: AGI）
  - 特定の作業に限定せず、人間と同様、あるいはそれ以上の汎化能力を持ち合わせている
  - 以下のようなものではない、という定義がされている
      - 特化型のAIの寄せ集めではない
      - 最初から何でもできる知能はない
      - タブラ・ラサ（白紙）から学習しない
      - 意識の有無は考慮しない

### ハードウェアとAI
  - CPUとGPU
    - CPU（Central Processing Unit）
      - 与えられた処理を1つ1つしかこなせないが、圧倒的なスピードで処理をしている
    - GPU（Graphics Processing Unit）
      - 画像処理のためのハードウェアで、並列計算に特化したアーキテクチャ
      - 大量の並列計算が行えるため、ディープラーニングではGPUが一般的となっている
    - GPGPU（General-purpose Computing on GPU）
      - 3DCGやCADなど、科学技術計算などで使われる様になったGPU

## ロボット研究とAIについて（身体性）
### カリフォルニア大学バークレー校（UCバークレー）
  - ディープラーニングと強化学習を組み合わせ、実世界を対象に研究を進めている
    - 実ロボットを使い、様々なマニピュレーション、歩行、飛行などのタスクを行っている
  - 試行回数を減らす必要があり、良い初期値を与えるために様々な工夫をしている
    - 行動をいかにチャンク化（ひとかたまりのデータとしてカテゴリ化する）するか
    - 複数の下位層のプランニングを行なう行うか
    - ある行動を別の機会に転移させるか
    - シミュレータをどう上手くつくるか
    - いかにハードが壊れないように行動を制御できるか

### Google DeepMind
  - とにかくオンライン空間上で研究を進める
  - 身体性の重要性は理解しているが、それを実現するためにはオンライン空間での研究を進めることが近道であるという戦略
  - DQN（Deep-Q-Network）などの技術を中心に研究
    - Q学習という強化学習のアルゴリズムをベースとし、最適行動価値観数と呼ばれる関数を決定する
    - ゲームのルールを教えなくとも、どのように操作すれば高得点を目指せるのかを判断することができる
  - 主にオンライン上から身体性へのアプローチを行っている
  - 3Dの迷路やシミュレータ上でのロボットの研究


# 人工知能の歴史
## 第1次AIブーム（推論と探索の時代）1950年代後半〜1960年代
### 探索木
  - 簡単に言うと「場合分け」で、全てのパターンを場合分けすることで、目的とする条件を獲得する

#### 探索木の手法
  - 深さ優先探索
    - とにかく行けるところまで掘り下げてみて、ダメなら次の枝葉に映る
  - 幅優先探索
    - 同じ階層をしらみつぶしにあたってから次の下位層に進む

### プランニング技術
  - 「前提条件（プリコンディション）」と「行動」と「結果（ポストコンディション）」という3つの組み合わせで記述するSTRIPS（Stanford Research Institute Problen Solver）が有名

#### 人工知能の大きな成功例とされた「SHRDLU」
- 1970年、テリー・ウィノグラード氏がスタンフォード大学で開発した
  - 「積み木の世界」に存在する様々な物体を自然言語で指示して動かすことができた
  - 言葉を正しく理解できるとして、人工知能の大きな成功例とされた

### チェスや将棋で用いられる推論と探索
#### ミニマックス法
  - 自分の点数を最大化する手を指し、相手はこちらの点数を最小化する手を指すとすると、2手先の最善手が決まる

#### モンテカルロ法
  - ある局面まできたら、点数をつけることを放棄し、交互にランダムに手を指し続け、とにかく終局させる。何回もそれを繰り返し、勝敗の数を点数とする
  - 基本原理は探索であって、何十年も変わっていない。ブルートフォース（力任せ）とも呼ばれる

### 第1次AIブーム終焉の理由
  - トイ・プロブレム問題
    - 人間が普段、直面するような問題は全然解けず、非常に限定された状況でしか問題が解けない（現実の問題は解けないというジレンマ）
  - マービン・ミンスキー氏がニューラルネットワークの限界を示す（実際は大した限界ではなかったが）
  - 米国政府が機械翻訳は当分成果が出る見込みがないという報告書（ALPACレポート）を提出し、研究への支援が打ち切られる


## 第2次AIブーム（知識）1980年代
### 「知識がありそうに見えるだけで人間は多大なインパクトを受ける」
  - 1964年に開発された対話システムELIZA（イライザ）
  - 単純なルールで人間の言葉に対して、言葉で返すようできている
  - ELIZAは人気が出て、人間は単純なルールで記述された言葉でも、そこに知性があると感じてしまうらしいということがわかった

### 専門家の知識を詰め込んだAI「エキスパートシステム」
#### 概要
  - 第2次AIブームの大本命で、知識を使った人工知能
  - 専門知識の分野を取り込み、推論を行なう行うことで、その分野のエキスパートのように振る舞うプログラム
  - 1970年代初めにスタンフォード大学で開発されたMYCINが有名（伝染性の血液疾患の患者を診断し、抗生物質を処方する）

#### 課題
  - 専門家からヒアリングして知識を取り出す必要があるので、多くのリソースが必要
  - 知識の数が増えることで、知識の品質管理を行なう行うことが必要
  - 高度な専門分野は対応可能だが、より広い範囲の知識を扱おうとすると、知識を記述することが難しい

### 全ての常識を入力するCycプロジェクト
  - 全ての一般知識をコンピュータに入力するプロジェクトで、1984年にスタートした
  - 30年以上経った今でもその入力は続いている

### 知識を体系化するための研究、オントロジー研究
#### 概要
  - 知識を記述することに対する研究
  - 哲学用語で「存在論」という意味
  - 人工知能の用語としては、「概念化の明示的な仕様」と定義される
  - システム開発に仕様書があるべきなのと同じように、知識を書くときにもそこに仕様書があるべきであろうという考え

#### 「is-a関係」と「part-of関係」
  - 概念の間の関係を表す際によく用いられるもの
  - 「is-a関係」は上位下位の関係で、犬は哺乳類であるなど
  - 「part-of関係」は部分が全体に含まれていることを表す。手は人間の一部であるなど

#### ヘビーウェイト・オントロジーとライトウェイト・オントロジー
##### ヘビーウェイト・オントロジー
  - 知識を記述するためにどうしていくかを、人間がきちんと考える

##### ライトウェイト・オントロジー
  - 概要
    - データを読み込ませて自動で概念の関係性を見つけさせる
    - 完全に正しいものでなくとも、使えればいいというややいい加減だが現実的な思想
    - ウェブマイニングやデータマイニングと相性が良い
    - Linked Open Data（LOD）の研究として展開されている
  - 実用例
    - ワトソン
      - IBMが開発
      - 2011年、アメリカのクイズ番組で優勝
      - 従来のクエスチョン・アンサリングの研究成果で、ウィキペディアをもとにライトウェイト・オントロジーを生成して、それを解答に使っている
    - ロボットは東大に入れるかプロジェクト
      - 2021年までに東大合格を目指す人工知能「東ロボくん」
      - 2014年11月、全国模試で8割の私大でA判定となった
  - Linked Open Data（LOD）について
      - ウェブ上でコンピュータ処理に適したデータを公開・共有するための技術
      - 従来のウェブがハイパーリンクによる人間のための情報空間の構築を目的としてきたことに対して、LODでは構造化されたデータ同士をリンクさせることで、コンピュータが利用可能な「データのウェブ」の構築を目指している

### 第2次AIブーム終焉の理由
  - 全ての知識を体系化するということは予想以上に大変で、ほとんど不可能と思われた
  - 機械翻訳の難しさ
    - コンピュータにとって、「意味」を理解することはとても難しい
  - フレーム問題
    - 有限の処理能力しかないロボットには、現実に起こりうる問題全てに対処することができないこと
  - シンボルグラウンディング問題
    - 記号（文字列、言葉）をそれが意味するものと結び付けられるかどうかを問うもの


## 第3次AIブーム（機械学習・ディープラーニング（特徴表現学習））2000年代~
### 第3次AIブームの始まり
  - データの増加により機械学習が発展
    - パターン認識の分野で長年蓄積されてきた基盤技術と、増加したデータによって、機械学習が着々と力を伸ばしてきた
    - 1990年、ウェブページが初めてできる
    - 1993年、ブラウザ「モザイク」が誕生
    - 1998年、Googleが誕生し、データマイニングの研究が盛んになる
  - 統計的自然言語処理（Statistical Natural Language Processing）の発展
    - 機械学習の発展により、自然言語処理の研究も大きく発展し、統計的自然言語処理という分野が急速に発展した
    - これは文法構造や意味構造を考えず、機械的に訳される確率の高いものを当てはめていけばいいという考え方

### 機械学習の手法
  - 教師あり学習
    - 「入力」「出力」がセットになったデータで学習させる
    - 代表的手法として誤差逆伝播（Back Propagation）
      - 正解と実際の出力を比較して重みづけを修正していく手法
  - 教師なし学習
    - 「入力」データだけを与え、入力パターンを分類したり、抽象する学習
    - 代表的手法として主成分分析、自己組織化マップなどの次元圧縮（Dimensionality Compression）
  - 強化学習
    - 「報酬信号」に基づき、これらの報酬をなるべく大きくするように探索する
    - 優しいタスクからの学習（Learning from Easy Missions: LEM）
    - クレジット割り当て問題（Credit Assignment Problem）
      - 空間内での軌跡が与えられたときや、報酬が遅延したときに過去のどの時点のどの範囲の行動を強化すればいいのかという問題
      - 状態行動空間を再帰的に定義することで、「鶏と卵」問題を解消する手法が提案されている
      - ベイズ推定の枠組みで、状態・行動空間を自律的に分割する機構を持つ強化学習法が提案されている

### 学習評価手法
#### 混同行列

||予測○|予測×|
|:-:|:-:|:-:|
|実際○|True Positive（TP）|False Negative（FN）|
|実際×|False Positive（FP）|True Negative（TN）|

  - 正解率
    - TPとTNを足して、全部の合計で割ったもの
  - 真陽性率（TP）
    - 実際に陽性であるもののうち、陽性であると判定されたサンプルの割合
    - 検出率（Recall）、感度（Sensitivity）、ヒット率（Hit Rate）、再現率とも呼ぶ
  - 偽陰性率（FN）
    - 実際には陽性であるもののうち、陰性であると判定されたサンプルの割合
  - 偽陽性率（FP）
    - 実際には陰性であるもののうち、陽性であると判定されたサンプルの割合
    - 誤検出率や誤警報率（False Alarm Rate）とも呼ぶ
  - 真陰性率（FN）
    - 実際に陰性であるもののうち、陰性であると判定されたサンプルの割合
    - 特異度（Specificity）とも呼ぶ
  - f値（F-measure）
    - 真陽性率（再現率）と正解率の調和平均を取ったもの
    - 性能を表す指標のひとつ
    - （2 * 正解率 * 真陽性率（再現率））/（正解率 + 真陽性率（再現率））

### 様々な学習方法
そもそも学習の根幹をなすのは「分ける」という処理であり、すなわち「YesかNoで答える問題」である

  - 最近傍法（Nearest neighbor）
    - 「一番近い隣を使う」という方法
    - 単純な分、ノイズに影響されやすい
  - ナイーブベイズ法
    - 確率の定理である「ベイズの定理」を使って分ける方法
    - 対象が全てのカテゴリに入る確率と、特定のカテゴリに入る確率を比較し、各カテゴリごとに採点を行い、最も高いものを正とする
  - 決定木
    - 質問のツリーを自動的に作成し、その答えによって分岐を行なう行うもの（心理テストで質問に答えていくイメージ）
    - 人間にとってはわかりやすいが、複数の属性を組み合わせた条件をつくることができないので、精度はそれほど高くない
  - サポートベクターマシン（SVM）
    - ここ15年くらいで流行っていた方法で、マージン（余白）を最大にするように、各カテゴリの端同士の垂直二等分線をつなぐことで分岐線を描くもの
    - 精度が高くよく用いられてきたが、大きなデータを対象としたときは、計算に時間がかかってしまうという欠点がある
  - ニューラルネットワーク
    - 人間の脳神経回路を真似することによって分けるもの
    - あるニューロンが他のニューロンから0か1かの閾値を受け取り、その値に重みをかけて足し合わせ、それが一定の閾値を超えると1になり、超えなければ0になる。それがまた次のニューロンに受け渡されるという仕組み

### なぜいままで人工知能が実現しなかったか
  - どこまで知識を書いても書ききれないと言う問題
  - フレーム問題
  - シンボルグラウンディング問題
  - 特徴量設計（Feature Engineering）は人間が行わなければならない
    - つまり、コンピュータは概念（シニフィエ）を自ら獲得することができない

### 50年来のブレークスルー、ディープラーニングの登場
  - ILSVRC（ImageNet Large Scale Visual Recognition Challenge）
    - 2010年から始まった、画像認識の世界大会
      - 2012年、でカナダのトロント大学が桁違いの正解率を出して優勝
  - トロント大学がディープラーニングを用いていたため、ディープラーニングは一気に広まりを見せた



# ディープラーニングとは
簡単に言うと、多階層のニューラルネットワークを用いた機械学習のことである。

## ニューラルネットワークと何が異なるのか
### 勾配消失現象を解決
  - 出力層における誤差を入力層に向けて伝播させる間に、誤差情報が徐々に拡散し、入力層に近い層では勾配の値が小さくなって学習が上手く進まない
  - 層の数が多いニューラルネットワークの学習の目的関数は、非常に多くの局所的な極小値（ローカルミニマム）を持ち、適切な結合の重みの初期値の設定が難しい

### 処理の違い
  - 1層ずつ階層ごとに学習を行う
  - 自己符号化器（オートエンコーダー）という「情報圧縮機」を用いる
    - 自己符号化器は結局、主成分分析を行っているだけ

## Googleのネコ認識の衝撃
  - Youtubeから画像を取り出して、コンピュータが自動でネコの概念を学習した
  - 深層信念ネットワーク（Deep Belief Network: DBN）を用いて学習した

## なぜこれまでディープラーニングが登場しなかったのか
ディープラーニング飛躍のカギは「頑健性」（ロバスト性）にあった。

  - ディープラーニングのアイディア自体は昔からある素朴なものであったが、やり方を間違えていたため、多くの研究者が失敗してきた
  - その理由は頑健性（ロバスト性）の向上をしていなかったためである
  - 頑健性を高めるために必要なこと
    - 入力信号に「ノイズ」を加える
    - ドロップアウトを行なう行う
      - ドロップアウトは一部のニューロンを停止させ、一部の特徴量を使えなくし、それをカバーするように学習させる

## 表現学習（Representation learning）を実現した
従来、人間が行ってきた特徴表現を自動で学習するものが表現学習である。

  - 学習手法（主に次元圧縮による手法）
    - クラスタリング法
    - 主成分分析（Principal Component Analysis: PCA）
    - 独立成分分析（Independent Component Analysis: ICA）
  - よい「表現」とは？
    - 滑らかさ
    - 複数の説明要因
    - 説明要因の階層的構造
    - 半教師あり学習
    - タスク間の共通要因
    - 多様体
    - 自然なクラスタ化
    - 時間的空間的一貫性
    - スパース性（データの分布のまばらさ）
    - 要因の依存の単純性

## 生成モデルと識別モデル
  - 生成モデル
    - データXが生成される過程までを含めてモデル化する
    - 有名なものは「VAE」（Variational Auto-Encoder）や視点を入れた拡張である「DRAW」（Deep Recurrent Attention Writer）
  - 識別モデル
    - データXが与えられたときにXが属するクラスを固定するモデル
    - 「畳み込みニューラルネットワーク」（Convolutional Neural Network: CNN）も識別モデル
    - 「LSTM」（Long Short-Term Memory）
      - ビリヤードの動きを「CNN」で学習させ、行動計画を立てられるようにした
  - 生成と識別を組み合わせたモデル
    - イアン・グッドフェロー氏らが提案した「GAN」（Generative Adversarial Network）
      - 生成器と識別器から構成され、互いに騙そう、騙されまいとすることで精度を上げる
    - 「GAN」を拡張した「LAPGAN」（Laplacian Pyramid of Generative Adversarial Network）
      - 物理世界での動きを予想できるようになる

## 様々なニューラルネットワークとその特徴
### 畳み込みニューラルネットワーク（Convolutional Neural Network: CNN）
  - 空間的構造をモデル化するもので、画像認識のデファクトスタンダードになっている
  - 福島邦彦氏が提案した「ネオコグニトロン」を踏襲している
    - 画像全体を取り扱うために、同じ反応性の受容野を持つい細胞をずらしながら2次元格子状に並べる
    - これらの細胞の計算を畳み込み演算（Convolution）として記述する
    - この結果、畳込み演算処理後の出力信号が、視野中のどこに特徴があったかを示す特徴マップとして表現される
    - 局所的な特徴を抽出し、空間プーリング位置ずれを許容しながら情報を圧縮することで、徐々に受容野を拡大し、情報を統合する脳の視覚野モデルとしてとらえることができる
  - 「ネオコグニトロン」を踏襲した他のニューラルネットワーク
    - LeNet（1998）
    - AlexNet（2012）
    - GoogLeNet（2014）
      - CNNの構造をしているが、縦方向のみならず、横方向にも深さを持つインセプション構造を持つ
      - 横方向にはサイズの異なるフィルターによる。畳み込みとプーリングが並んでいる
    - VGG（Visual Geometry Group）
      - 畳み込み層とプーリング層からなる、基本的なCNN構造
      - 3×3の小さなフィルターによる畳み込みを2層から4層連続で行い、プーリング層でサイズを半分にすることを繰り返す
      - 最後に全結合層を経由する
    - 深層畳み込みニューラルネットワーク（Deep Convolutional Neural Network: DCNN）
  - AlexNetでの使われ方
    - 活性化関数にReLUを用いる
    - LRN（Local Response Normalization）という局所的正規化を行なう行う層を用いる
    - Dropoutを使用する

### リカレントニューラルネットワーク（Reccurent Neural Network: RNN）
  - 時間的構造をモデル化するもので、再帰的なつながりを持つネットワーク
  - ここでいう時間的構造とは、単純な時系列だけでなく自然言語や音など、順序的な構造を含むデータである
  - 系列予測、姿勢制御、自然言語処理への応用が考えられている
  - 勾配消失、勾配爆発問題を回避する

### Long Short-Term Memor（LSTM）
  - RNNの一種
  - 必要な文脈情報の長さを適応時に制御することで、時間を遡る誤差逆伝播学習の可能性を向上させる
  - 画像からの説明文（キャプション）の生成や、機械翻訳など、多くの課題に適用されている

### 生成敵対ネットワーク（Generative Adversarial Network: GAN）
  - 画像を生成するモデル
  - 詳細は後述




## 各分野への応用
### 画像認識
  - ResNet
    - 一般的にCNNは、層が深い構造にすることで、精度を上げることができるものだが、その反面、パラメータ数が膨大になり学習が困難となる
    - 深い層でも学習を上手くさせる枠組みとして、「ResNet」が提案されている
      - 畳み込み層の一部を複数まとめてスキップするスキップ構造（ショートカット、バイパス）を導入し、逆伝播において勾配をそのまま流すことで、勾配消失問題を軽減する
    - これにより150層以上をつなげることができるようになった
  - R-CNN（Regions with CNN）
    - 選択的検索法から得られる物体領域候補内の画像を、事前に学習しておいたCNNに入力し、領域の画像特徴を抽出する
    - 線形サポートベクトルマシンに抽出された画像特徴を入力し、領域の物体クラスを予測
    - 物体領域の数分、CNNの順向き伝播の計算が必要であり、物体検出ネットワークとは別のモジュールで物体領域候補を計算する必要がある。そこで、物体検出ネットワークと領域提案ネットワークを統合した「Faster R-CNN」が提案されている
  - FCN（Fully Convolutional Network）
    - 対象物体と背景を境界まで詳細に切り分けるタスク（物体セグメンテーション）を行なう行うネットワーク
    - クラス分類のネットワークは前段が畳み込み層、後段が全結合層となっている
    - ピクセルレベルでセグメンテーションを行なう行うため、意味レベルでの物体セグメンテーションには適切ではない。そこで、各物体を分けつつ物体を背景から取り出す手法として「MNC」（Multi-task Network Cascade）などが提案されている
  - Long Short-Term Memor（LSTM）
    - RNNの一種で、画像から自然言語で記述されたキャプションを生成する技術
    - 生成の流れ
      - 画像をCNNに入力
      - 画像特徴を得て、LSTMに入力
      - 事前に生成した単語を考慮しながら、文章を作り出す
  - Deep Dream
    - 2015年にGoogleが開発した
    - 通常の画像を夢に出てくるような神秘的な画像に変換するシステム
  - Deep Style
    - 入力画像の画風（ゴッホなど）を変換するシステム
    - AIが制作する芸術として注目されている
  - 生成敵対ネットワーク（Generative Adversarial Network: GAN）
    - 画像生成で最も利用されているネットワーク
    - 画像生成器と画像識別器で構成されており、生成器は識別器を騙す画像を、識別器はそれに騙されないように識別するというタスクをお互いに繰り返すことで学習を進めている

### 音声認識
  - ディープラーニングが最初に成功を収めた分野
  - 一般的な手法は混合正規分布（Gaussian Mixture Model: GMM）に基づく隠れマルコフモデル（Hidden Markov Model: HMM）であった
  - 現在はGMMとHMMの代わりに深層ニューラルネットワーク（Deep Neural Network: DNN）を用いている
  - 音楽モデル
    - 音量特徴量を入力して、音素状態のカテゴリに分類する
    - 基本的に教師あり学習である
    - 音素や単語の時系列のモデル化には、HMMが依然として用いられるが、近年、HMMを用いずにLSTMを用いて、音量特徴量から音素や文字に直接変換するCTC（Connectionist Temporal Classification）という方式が注目を集め、従来のDNN-HMMの性能に近づきつつある
      - CTCを含む、音響特徴量から音素、文字列、さらに単語列に直接変換するアプローチをEnd to Endモデルと呼ぶ
  - 言語モデル
    - 従来はN-gramモデルが一般的に用いられてきたが、近年はRNNを用いたモデルも導入・併用され、認識率の改善を実現している
  - 雑音・残響抑圧
    - 従来は、線形フィルタや統計的なモデルが用いられてきたが、近年デノイジングオートエンコーダ（Denoising Auto Encoder: DAE）などのディープラーニングが用いられている
    - 複数のマイクロフォンを用いて音声を強調する場合、雑音の分離などにDNNが使われる
  - 音声合成
    - 2016年に発表された「WaveNet」では、階層的に履歴を集積する降雨妙なRNNの構造を導入することで、高い品質の音声合成を実現している


### 自然言語を中心とする記号処理
これまではSVM（Support Vector Machine）やCRF（Conditional Random Field）がスタンダードであったものが、フィードフォワードニューラルネットワーク（FFNN）やリカレントニューラルネットワーク（RNN）に置き換わりつつある。

  - 句構造解析
    - 単語列の構文的なまとまりを木構造で表す
    - SVM、最大エントロピー法、単層パーセプトロン、CRFといった線形分類器がよく使われ、最近ではFFNNやRNNが使われ、精度が上がった
  - 依存構造解析
    - 文法関係を木構造で表す
    - CYK（Cocke Younger Kasami）法やチャート法といった動的計画法、ヒューリスティック探索など基本技術が多い
  - 意味構造解析
    - 文が表す意味構造を認識する技術
    - 述語とその意味的な項を表す「述語項構造」
    - 述語論理などの形式論理を用いる「論理表現」
    - 汎用的意味表現として提案された「AMR」（Abstract Meaning Representation）
  - 感情極性解析（Sentiment Polarity Analysis）
    - 入力された文章がポジティブかネガティブかを解析する技術
  - 含意関係認識（Recognizing Textual Entailment: RTE）
    - 自然言語処理の大きなブレークスルー
  - 言語モデル
    - n-gram言語モデル
    - リカレントニューラルネットワーク言語モデル（Recurrent Neural Network Language Model: RNNLM）
      - 過生成や生成不足をしてしまうことが、問題点とされている

### 芸術
  - Googleの「Deep Dream」
    - 学習済みのCNNの内部を知るために開発された手法
    - 学習済みのCNNに対し、指定した画像を入力し、認識した判定結果を強調するように画像を変化させる
  - Googleの「DRAW」（Deep Reccurent Attentive Writer）
    - 生成モデルとして「VAE」（Variational Auto Encoder）を用い、画像中の各部分に注意を向けながらRNNで反復的に画像を生成するモデル
    - 数字の画像を生成することに成功
  - Googleの「BEGAN」（Boundary Equilibrium Generative Adversarial Network）
    - 自然な人間の顔画像を生成する
  - トロント大学の「AlignDRAW」
    - 自然言語で書かれた文章から対応する画像を生成する
  - チュービンゲン大学（ドイツ）の「A Neural Algorithm of Artistic Style」と「DCGAN」（Deep Convolutional Generative Adversarial Network）
    - 葛飾北斎やゴッホらの画風を学習し、任意のスタイルに変換する
  - デルフト工科大学（オランダ）とMicrosoftの「The Next Rembrandt」
    - 17世紀の画家であるレンブラントの絵画に寄せて、3Dプリンタで出力する
  - ソニーコンピュータサイエンス研究所（Sony CSL）の「Flow Machines」
    - AIを使って作曲を目指す
  - プリンストン大学による「deepjazz」
    - 2層のLSTMを用いてジャズを学習し、生成できる
  - カリフォルニア大学サンディエゴ校の「Dance Dance Convolution」
    - 任意の音楽を入力すると「ダンスダンスレボリューション」のステップを生成する
  - 公立はこだて未来大学の「作家ですのよ」
    - AIによるショートストーリーの創作を目指す



## ディープラーニングによる技術発展と未来予測
  - 画像認識（2014）
    - ディープラーニングによって、画像特徴の抽象化ができる
  - マルチモーダルな認識（2014）
    - 画像特徴の抽出から、時間を扱う「動画」や「音声」などのマルチモーダルな抽象化ができるようになる
  - ロボティクス（2015）
    - コンピュータ自らの行為と、その結果を合わせて抽象化できるようになる
  - インタラクション
    - 行動と結果について抽象化できると、「行動した結果」について、特徴量を抽出し、抽象化ができるようになる
  - シンボルグランディング
    - 行動した結果について抽象化できると、自然言語処理を抽象化することができるようになる
  - 知識獲得
    - 自然言語を処理できる=人間の言葉を理解できるなので、本を読んだり膨大なウェブの情報を読めるようになる
  - 数的操作（2020）
    - ビッグデータ分析の自動化、マーケティングの自動化
    - 自動プログラミング、数的な特徴量の生成
  - 対象のモデル化（2025）
    - 経済・社会予測精度の向上、AIによるノーベル賞
    - 科学的発見、経済・社会現象の生成
  - 意識・自己・再帰（2030）
    - 哲学・言語学の諸問題の解決、意識のアップロード化
    - 人間の知能・知識の解明


## 開発用の有名なライブラリ
  - IBM「Watson」
  - Google「TensorFlow」
  - Berkely Vision And Learning Center「Caffe」
  - Preferred Networks「Chainer」


# ニューラルネットワークについて
## パーセプトロン
1957年にアメリカの研究者であるローゼンブラットによって考案され、ニューラルネットワークの起源とされている。

  - 入力を与えれば決まった値が出力され、「重み」と「バイアス」をパラメータとしてセットする
  - 単層パーセプトロンは線形領域のみしか表現できないのに対し、多層のパーセプトロンは非線形領域を表現することができる

### AND
2つの入力が互いに1のとき、出力が1となる。

|x1|x2|y|
|:-:|:-:|:-:|
|0|0|0|
|1|0|0|
|0|1|0|
|1|1|1|

### NAND
2つの入力が互いに1のときだけ、出力が0となる。

|x1|x2|y|
|:-:|:-:|:-:|
|0|0|1|
|1|0|1|
|0|1|1|
|1|1|0|

### OR
2つの入力のいずれかが1のとき、出力が1となる。

|x1|x2|y|
|:-:|:-:|:-:|
|0|0|1|
|1|0|0|
|0|1|0|
|1|1|1|

### XOR（排他的論理和）（多層パーセプトロン）
NAND × OR × AND

|x1(NAND)|x2(OR)|y(AND)|
|:-:|:-:|:-:|
|1|0|0|
|1|1|1|
|1|1|1|
|0|1|0|

### 重みとバイアス
  - 重みは入力信号の重要度をコントロールする
  - バイアスはニューロンの発火しやすさを調整する


## 行列の積
パーセプトロンにおける、入力値と重みの計算を行う際に行列の積が使われる。

  - 行列なので対応する次元の要素数を必ず一致させる
    - ○[1, 2] × [[1, 3, 5], [2, 4, 6]] = [5(1 * 1 + 2 * 2), 11(1 * 3 + 2 * 4), 17(1 * 5 + 2 * 6)]
    - ×[[1, 2, 3], [4, 5, 6]] × [[1, 2], [3, 4]]


## 活性化関数
入力の総和を出力信号に変換する関数を活性化関数と呼ぶ。

### 代表的な活性化関数
#### シグモイド関数（非線形関数）
  - 従来、よく使われていた関数
  - 入力した値が大きければ大きいほど1に近づき、小さければ小さいほど0に近づく
  
#### ReLU関数
  - 最近主に使われる活性化関数
  - 入力値が0以下のとき0となり、1より大きいときに入力をそのまま出力する
  - 計算が速い
  - 勾配損失しない
  - スパース性の高さにつながる
    - 重要でない要素は大胆に切る

### 出力層で使われる活性化関数
#### 恒等関数
  - 一般的に、回帰問題で使われる
  - 入力した値と同じ値をそのまま出力する

#### ソフトマックス関数
  - 一般的に分類問題で使われる
  - 全出力の値の合計が1になるように出力されるため、確率で表現できる

## 損失関数
ニューラルネットワークの学習で用いられる指標で、「どれだけ性能が悪いか」を表す。

### 2乗和誤差
  - 最も有名な損失関数
  - 差の二乗を求め、全クラスで足す
  - 0から1の範囲で「性能の悪さ」を表現

### 交差エントロピー誤差
  - 2乗和誤差の次に使われる
  - 情報理論において、2つの確率分布の間に定義される尺度



## ミニバッチ学習
  - 大量のデータから一部だけ選び出し（ミニバッチ）そのデータを全体の「近似」として利用する
  - データは学習のたびにランダムで選び出される

## 勾配法
機械学習で、最適なパラメータ（重みとバイアス）を探索する際に、勾配を上手く利用して損失関数の最小値を探すもの。

### 最急降下法（Gradiend Descent）
関数の傾きのみから、関数の最小値を探索する。

### 確率的勾配降下法（Stochastic Gradien Descent: SDG）
  - オンライン勾配降下法とも言う
  - 学習データの中からランダムに1つのデータを取り出して勾配を行う。

### ミニバッチ確率的勾配降下法（Minibatch SDG: MSDG）
学習データの中からランダムにいくつかのデータを取り出して勾配を求める。


### 勾配法の問題点
  - 最初に取る点次第では最小点にたどり着くとは限らない
    - 傾きが0になると停滞してしまう
    - 特定の地点で損失が上昇する場合、そこが最小点でなくても最小点と判断してしまう
    - 直角を描いた場合、最小点を飛び越え続けて収束しない
  - 数値微分はシンプルだが計算に時間がかかる

## 誤差逆伝播法
勾配法で行う数値微分は計算に時間がかかってしまうという難点があった。
これを解決するのが誤差逆伝播法である。

### 誤差逆伝播法の特徴
  - 局所的な計算によって問題を単純化できる
  - 逆方向の伝播によって微分を効率よく計算できる

### 連鎖率
  - 逆伝播の「局所的な微分」を伝達する原理のこと
  - 合成関数（複数の関数によって構成される関数）を微分する際、その導関数がそれぞれの導関数の積で与えられる
 
### 偏微分
  - 複数の変数による関数があるとした際の、その中の1つの変数のみに関する微分

## 学習率
  - 1回の学習でどれだけ学習すべきか、どれだけパラメータを更新するかを決める値
  - 前もって人間が決める必要がある値で、このことをハイパーパラメータと呼ぶ



# 法律整備
## AIによる創作物
  - 国内
    - 1993年に公表された「著作権審議会第9小委員会報告書」においては、通常の著作物と同様の著作権が認められる
    - 2016年4月に公表された「次世代知財システム検討委員会報告書」においては、「学習済みモデルを使い、簡単な指示のみで生成された創作物については、「AI創作物」であると整理され、現行の著作権法上は著作物と認められないこととなる」
    - AIによる創作物は外見から判別しきれないものもあるため、これをどう保護していくかは今後の課題となる
  - 海外
    - AIによって自動生成された場合、人間によって創作されていないのであれば、著作権保護は受けない
    - 英国著作権法（Copyright, Designs and Patents Act: CDPA）は、人間が関与しない「コンピュータ創作物」について著作権を認めている
  
## AI創作物による特許
  - 国内
    - 現行法では創作者が人間であることが前提なので、保護の対象とならないとしている
    - ただし、以下3ステップのいずれかを人が行えば、人間の創作であると整理される
      - 課題設定
      - 解決手段候補選択
      - 実効性評価
  - 海外
    - AIは自然人ではないため、「発明者」の要件を満たさない

## 学習済みモデルの保護
  - 国内
    - 学習済みモデルが「プログラムの著作物」に該当するかどうかの理論がされている
    - 特許法上では「プログラム等」に該当するならば、特許法の要件を満たす場合には保護される
    - 該当しない場合でも、不正競争防止法上の秘密管理性、有用性、非公知性といった要件を満たす場合には、「営業秘密」として保護される
  - 海外
    - 一般のプログラムと同様に特許法上の保護を受け得る

## 学習用データ
  - 国内
    - インターネット上のデータ等の著作物を元に、学習用データを作成・解析することは、営利目的の場合でも著作権法47条に基づき、著作権侵害には当たらない
    - しかし、学習用データと称して、著作物がそのまま提供されてしまうことが懸念されるため、学習用データの一般への提供は難しいとの扱いになっている
  - 英国著作権法
    - 2014年の改正によって、権利制限規定が設けられている
      - 非商業的な目的による調査を唯一の目的として行うコンピュータによる解析に伴う複製は、十分な出所明示を行うことを条件として、著作権侵害には当たらない
  - ドイツの著作権法改正法案
    - 2017年2月1日公表された著作権法改正法案
      - 学術的な研究のために多数の著作物を自動的に解析する場合であれば、著作物を複製及び一定の公衆提供することが許容される
      - ただし、非商業的な目的に限る
  - 欧州指令案
    - 2016年9月14日に公表
      - 科学的調査のためにデータ解析を行う目的で、研究機関によって行われる複製及び抽出に関する権利制限規定を定めることが、加盟国の義務とされる
      - 権利者は、著作物が蔵置されるネットワークやデータベースのセキュリティが確保されるための措置を請求できる



# 参考文献
- 人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)
- AI白書 2017
- ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装