G検定 本番困りそうな所まとめ

# はじめに
G検定の内容をざっと確認できるページを作ったので公開しておきます。

# 1. 基礎知識関係
## 1.1. 人名まとめ
### ・ 機械学習の基礎関係
|名前|内容|
|---|---|
|アーサー・サミュエル|・機械学習を「明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野」と定義した|
|アラン・チューリング|・人工知能の判定テストであるチューリングテストを考案した|
|アレン・ニューウェル<br>ハーバード・サイモン|・世界初の人工知能プログラムであるロジック・セオリストを開発した|
|アンドリュー・ン|・機械学習などの講義が見れるサイトCourseraの設立に携わった|
|イアン・グッドフェロー|・GANを考案|
|ジェフリー・ヒントン|・ILSVRC2012でディープラーニングを使って優勝した<br>・Googleに招かれた|
|ジョゼフ・ワイゼンバウム|・世界初のチャットボット、ELIZAを制作した|
|ジョン・サール|・強いAI・弱いAIという言葉を作った|
|ジョン・マッカーシー|・人工知能という言葉を初めて使用した<br>・フレーム問題を提唱した|
|スティーブン・ハルナッド|・シンボルグラウンディング問題を提唱した|
|ダニエル・デネット|・フレーム問題を考えすぎるロボットの例で説明した|
|ヤン・ルカン|・GANを「機械学習において、この10年間で最も面白いアイデア」と形容した<br>・Facebookに招かれる<br>・有名なCNNのモデルLeNetを考案|
|ヨシュア・ベンジオ|・ディープラーニングの父と呼ばれる<br>・観測データの良い表現について提言した<br>・モントリオール大に所属|

### ・ シンギュラリティ関係
|名前|内容|
|---|---|
|イーロン・マスク|・自動運転車の会社テスラのCEO<br>・「人工知能にはかなり慎重に取り組む必要がある。結果的に悪魔を呼び出していることになるからだ」と懸念を表明<br>・非営利研究組織OpenAIを設立した|
|ヴァーナー・ヴィンジ|・シンギュラリティを「機械が人間の役に立つフリをしなくなること」と定義|
|オレン・エツィオー二|・「賢いコンピュータが世界制覇するという終末論的構想は馬鹿げているとしか言いようがありません」と発言|
|スティーブン・ホーキング|・宇宙物理学者<br>・「完全な人工知能を開発できたらそれは人間の終焉を意味するかもしれない」と発言した|
|ヒューゴ・デ・ガリス|・シンギュラリティが21世紀の後半に来ると予想<br>・その時人工知能は人間の一兆の1兆倍の知能を持つと主張|
|ビル・ゲイツ|・マイクロソフトの創業者<br>・人工知能脅威論に同調|
|レイ・カーツワイル|・シンギュラリティーという言葉を提唱した<br>・2045年にシンギュラリティが起きると予想した<br>・2029年に人工知能が人間より賢くなると予想した|

## 1.2. 機械学習の定理とか
|名前|説明|
|---|---|
|フレーム問題|機械にはどこまでが問題に含まれるかの切り分けが困難という問題|
|シンボルグラウンディング問題|記号とその表現を結びつけるのが困難という問題|
|次元の呪い|機械学習ではデータの次元が増えると計算量が爆発的に増大し。必要なデータや時間が大量になってしまうという問題|
|バーニーおじさんのルール|ディープラーニングの学習にはパラメータの10倍のデータが必要という経験則|
|みにくいアヒルの子理論|機械学習ではアヒルの子と醜いアヒルの子の類似性は他のアヒル同士の類似性と同じになる|
|ノーフリーランチ定理|どんな問題でも使えるアルゴリズムは存在しないという定理|
|モラベックスのパラドックス|機械にとっては高度な推論よりも、1歳児レベルの知恵や運動スキルを身につける方が難しいというパラドックス|

## 1.3. 著名なソフト
|名前|開発元|説明|
|---|---|---|
|SHRDLU|テリー・ウィノグラード|・場合分けによって積み木の世界での対話処理を実現した|
|ELIZA|ジョゼフ・ワイゲンバウム|・特定のルールに従って会話を行うチャットボット<br>・チューリングテストで30%の人間を誤らせた|
|PARRY|ケネス・コルビー|・ELIZAと同時期に開発されたチャットボット<br>・ICCC 1972などでELIZAと会話した。<br>・会話記録はRFC439などが有名|
|MYCIN|スタンフォード大学|・エキスパートシステムを使って感染した細菌と有効な抗生物質を特定する|
|DENDRAL|エドワード・ファイゲンバウム|・エキスパートシステムを使って未知の有機化合物を特定する|
|ディープ・ブルー|IBM|・チェスで世界チャンピオンに勝利した<br>・手法としてモンテカルロ法(力任せの探索)を用いている|
|AlphaGo|DeepMind|・囲碁で世界チャンピオンに勝利している|
|Ponanza|山本一成|・将棋でプロ棋士に勝利している|

# 2. 実践関係
## 2.1. 機械学習の手法まとめ
|手法|課題の種類|種別|説明|
|---|---|---|---|
|knn法<br>(k近傍法)|教師あり|分類|・近くにあるサンプルの数で多数決をとる|
|SVM<br>サポートベクターマシン|教師あり|分類|・マージンを最大化する線形な関数を見つける<br>・非線形な関数に適用する場合にはカーネル変換を利用する<br>・カーネル変換の計算量を減らす手法をカーネルトリックと呼ぶ。|
|ロジスティック回帰|教師あり|分類|・尤度関数の最小化をする線形回帰によって対数オッズを予測し、ロジット変換によって正規化することで各クラスに属する確率を計算する|
|決定木|教師あり|回帰・分類|・データを木構造をとる有向グラフで表し、条件分岐を行う<br>数値データならば回帰木、分類データならば分類木と呼ぶ。|
|アンサンブル学習|教師あり|回帰・分類|・複数のモデルを実施して、回帰であれば平均、分類であれば多数決をとる手法<br>・バギングとも呼ぶ|
|ランダムフォレスト|教師あり|回帰・分類|・決定木にアンサンブル学習を取り入れたもの|
|線形回帰|教師あり|回帰|・標本値と予測値の誤差を最小化する線形関数を見つける|
|k-means法<br>(k平均法)|教師なし|クラスタリング|・いくつかのクラスタ(分類)を用意し、その中心を計算する。<br>・その後、中心とそれぞれのサンプルの距離を計算し、サンプルを最も近い中心が属するクラスタに設定し直す。<br>・この２つを中心の移動量が一定を下回るまで繰り返す|
|PCA<br>(主成分分析)|教師なし|次元削減|・線形結合からデータ内の分散が大きくなるような特徴量を見つける|
|Q学習|強化学習|-|・報酬を最大化させる方策を見つける|

## 2.2. ディープラーニングの手法まとめ
|手法|課題の種類|説明|確率・確定的|
|---|---|---|---|---|
|CNN<br>(畳み込みニューラルネット)|教師あり|・位置情報を扱える<br>・画像などに利用|確定的|
|RNN<br>(再起型ニューラルネット)|教師あり|・時間情報を扱える<br>・音声などの時系列データに利用|確定的|
|LSTM<br>(LongShortTermMemory)|教師あり|・長期的な時間情報を扱える|確定的|
|オートエンコーダ<br>(自己符号化機)|教師なし|・入力と出力を一致させる<br>・隠れ層を入力層より少なくし、潜在表現を獲得する<br>・事前学習などに利用|確定的|
|積層オートエンコーダ|教師あり|・学習済みのオートエンコーダを積み上げ、出力層を付け加える|確定的|
|VAE<br>(variable auto encoder)|教師なし|・入力と出力を一致させる<br>・隠れ層を平均と分散として表現する(潜在表現の獲得)<br>・画像生成などで利用される|確定的|
|GAN<br>(Generative Adversarial Network)|教師なし|・生成器と識別器の２つから成り立つ<br>・生成器は識別器を騙すように、識別器は生成された画像を見破るように学習する<br>・画像生成などで利用される|確定的|
|深層ボルツマンマシン|教師なし|・観測データの確率場をノードとし、無向の結合で依存関係を表す|確率的|
|深層信念ネットワーク|教師なし|・観測データの確率場をノードとし、有向の結合で依存関係を表す|確率的|
|DQN<br>(深層Q学習)|強化学習|・報酬を最大化させる方策を見つける<br>・ロボット操作やゲームなどに利用|---|

## 2.3. 機械学習で発生する問題
|手法|説明|
|---|---|
|局所最適解|・勾配降下法において、誤差は最小ではないが勾配が非常に小さくなる値(極小値)に収束してしまう問題<br>・このような値を停留点・鞍点と呼ぶ|
|多重共線性|・重回帰分析などで発生する<br>・説明変数の中に相関係数が高い(類似した)変数があるときに発生<br>・標準誤差の増加など予測が上手くいかなくなる|
|内部共変量シフト|・ある層の入力がそれより下層の層の学習が進むにつれて変化してしまう問題<br>・出力の偏りをなくすバッチ正規化(Batch Normalization)で対応される|
|過学習|・モデルが訓練データに適合しすぎてしまい、汎用性がなくなる<br>・訓練誤差は小さくなるが汎化誤差が小さくなっていない時が発生の目安<br>データ量の増加、正則化、早期打ち切りなどが対策となる<br>・これを調べるために一部のデータをテスト用に分割することをホールドアウト法と呼ぶ|
|勾配消失|・ディープラーニングで発生する問題<br>・誤差逆伝播法で誤差の勾配が入力層に伝播する過程で0に近づいてしまい学習が進まなくなってしまう<br>・活性化関数にReLUを用いるなどの方法で対策された|
|勾配爆発|・主にRNNなどで発生<br>・誤差の勾配が異常に増加する|
|計算量増加|・誤差逆伝播法の考案前は各ノードで微分を行なっていたため、計算量が多く層の数を増やすのが難しかった|

## 2.4. 前処理の手法
|手法|説明|
|---|---|
|正規化|・特徴量を一定の範囲にスケーリングする<br>(ex)最大値で割って0〜１に変換するなど|
|標準化|・特徴量を平均が0、分散が1の標準正規分布に従うように変換する|
|白色化|・各特徴量を無相関化してから標準化する|
|正則化|・過学習の回避や説明変数の削減に用いられる<br>・誤差関数にパラメータの和を付加することで行われる|
|L1正則化|・誤差関数にパラメータの絶対値の和を加える<br>・主に不要な説明変数を削減する(スパース化)ために用いられる<br>・これを適用した線形回帰をLasso回帰と呼ぶ|
|L2正則化|・誤差関数にパラメータの二乗和を加える<br>・荷重減衰ともよび、主に過学習を防ぐために用いられる<br>・これを適用した線形回帰をRidge回帰と呼ぶ|
|ElasticNet|・L1正則化・L2正則化の中間|
|平滑化|・他のデータから大きく外れているデータを平均化あるいは除去することで合理性を保つ|
|ヒストグラム平均|・画素ごとの明るさをスケーリングする|


## 2.5. 勾配降下法の手法まとめ
|手法|説明|
|---|---|
|SGD<br>(確率的勾配降下法)|・損失関数を微分して勾配を計算し、勾配方向へ事前に決めた学習係数だけ進むことを繰り返す|
|Momentum|・物理的な動きを模倣したもの、速度と加速度を持つ<br>・学習率は一定で、以前利用した勾配が速度の中に残る|
|AdaGrad|・パラメータそれぞれに個別の学習係数を与える<br>・大きく動いたパラメータの学習係数は小さくなる|
|RMSProp|・AdaGradの改良版<br>・指数移動平均を蓄積することで、過去に大きく動いたパラメータの学習係数も時間が経つと再度大きく動くようになる<br>|
|Adam|・AdaGradとMomentumの融合<br>勾配の平均と分散を推定し利用する|

## 2.6. 活性化関数まとめ
|関数名|説明|
|---|---|
|ステップ|・0か1のみを出力<br>・単純パーセプトロンで用いる|
|シグモイド|・0から1まで滑らかに接続<br>・勾配消失が起きやすい|
|tanh<br>(双曲線正接関数)|・-1から1の範囲を出力<br>・やや勾配消失しにくい|
|ReLU<br>(正規化線形関数)|・xが0以下なら0、それ以上ならxを出力<br>・勾配消失しにくい|
|Softmax|・出力の総和が1になる(確率の形式)<br>・分類問題の出力層に用いられる|
|恒等関数|・入力をそのまま出力<br>・回帰問題の出力層に用いられる|

## 2.7. モデルの評価指標まとめ
|評価指標|使用分野|説明|
|---|---|---|
|正解率|分類|・全データの内、予測値と標本値が一致したものの割合<br>・100%に近い程良い|
|適合率|分類|・正値を予測したデータの内、標本値でも正値だったデータの割合<br>・100%に近いほど良い|
|再現率|分類|・標本値が正値になっているデータの内、正値を予測できたデータの割合<br>・100%に近いほど良い|
|RMSE|回帰|・予測値と標本値の誤差を二乗して平均を出し、平方根を取ったもの<br>・0に近いほど良い|

## 2.8. 学習済みモデルの活用方法
|手法|説明|
|---|---|
|蒸留|大きな学習済みモデルの出力を使って小さなモデルを学習し、特徴を継承する|
|転移学習|学習済みモデルに何層か加えて異なるターゲットで再学習させる|