G検定テスト用カンペメモメモ

G検定の自分用メモです。
個人の見解が多分に含まれており、参考にはしないでください

深層学習：ディープニューラルネットワークを用いて学習。

アーサー・サミュエル：明示的にプログラムしなくても学習する能力をコンピュータに与える

アラン・チューリング（チューリングテスト）：ある機械が人工知能かどうかを判定するためのテスト。人間に相手が機械かどうかを判断させる。（ELIZA、PARRY）

AIブーム：
1.推論と探索(o：トイプロブレム、x：複雑に絡んだ現実の問題)
2.エキスパートシステム：知識ベースと推論エンジン（x定式化難しい）
3.機械学習と深層学習：ディープラーニング
→watsonがクイズ王に勝つ googleが猫を認識

ILSVRC (ImageNet Large Scale Visual Recognition Competition)：画像認識のコンペ
データimagenet　一般物体認識のcompetition
2012：ジェフリーヒルトン AlexNet(8層)　畳み込み(そのまえはSVM)パラメ60m、データ600m
2014： GoogLeNet(22層)
2015：ResNet(152層)



フレーム問題：機械は特徴の範囲(フレーム)を絞れない
・それに縛られないのが強いAI
・ダメなのは弱いAI
・汎用AI：
・特化型AI：

強化学習
ディープブルー ：by IBM チェスで力任せの探索
*チェスの世界チャンピオンに勝ってる
Ponanza：将棋
AlphaGo：囲碁

エキスパートシステム
Cycプロジェクト：一般常識を知識ベース化する
OpenCyc：

ナレッジエンジニア：エキスパートシステムのデータを埋めていく人

シンボルグラウンディング問題：記号システムのシンボルを実世界でそれが意味するものといかに結びつけるか

レイカーツワイル：2045シンギュラリティ
ヒューゴ・デ・ガリス：21世紀後半シンギュ
イーロンマスク：危機感もつ、OpenAIを設立
オレン・エツィオーニ：シンギュラリティない
バーナーヴィンジ：機械が人間の役に立つフリをしなくなる
スティーブンホーキング：人類の終焉

意味ネットワーク：is-a part-ofとか

教師あり
回帰：線形回帰（単回帰、重回帰）、SVM回帰
分類：SVM、決定木、ランダムフォレスト(決定技に対して過学習をを回避)、
ロジスティック回帰(回帰だけど分類)：尤度関数
kNN法
*深層学習は両方できる

レコメンデーション：
強調ベース：購買履歴を元におすすめ
内容ベース：アイテムの特徴

教師なし
次元削減(BMI)
*入力に対する出力を予測する
クラスタリング(k-means法)
*データの本質的な構造を浮かび上がらせる手法
強化学習：DQN
*収益の最大化する行動で状態を変えて、方策を獲得する

前処理
正規化：確率みたいに0~1にする
標準化：平均を0分散を1に変換(標準平均にするって感じやね)
*含まれないけど正則化：過学習の抑制
**特徴量エンジニアリング：前処理の後、モデルが認識しやすい特徴量を作る：one hot engcoding(ダミー変数化)

基礎集計
・平均・分散・標準偏差出しとく
・散布図で傾向を調べる
・相関行列の表示

ホールドアウト法：訓練データ(学習に用いる)・テストデータ(汎化性能（予知性能）を図るため)を用いる

交差検証(クロスバリデーション)：データを分割してそのブロックごとに移動しながらホールドアウトして精度を平均する
*ハイパーパラメータのグリッドサーチ：最も精度が高いやつ（計算量は多くなる。自動化できるけど）


具体的手法


多重共線性(multicollinearity)：マルチコ

線形分離可能：2次元にプロットして、直線で分ける
線形分離不可能：まばらになってて、直線で分類できない

分類

教師あり
SVM：マージン(直線からプロット)の最大化
*誤分類を許容する度合い→ハイパーパラメータ

スラック変数：線形分離不可能なデータのマージンを最大化
カーネル法：カーネル関数で高次元で線形分離する(非線形境界をえられるようにする)
カーネルトリック：カーネル法の計算量を大幅削減


決定木：情報利得の最大化→不純度が最も減少するように条件分岐
・データのスケールを事前に揃えておく必要がない
・分析結果の説明が容易
*不純度：クラスの混じり具合(ジニ係数・エントロピー)
random forest(決定木+バギング)：データを複数に分けて、学習させ、それぞれの判断の多数決・平均をとることで決定する。*過学習しても良い

ロジスティック回帰：
1.対数オッズ(値)を重回帰分析により予測
2.対数オッズをロジット変換(0-1に正規化)し、それぞれに属する確率を求める
3.最も確率が高いものに分類される

kNN(k Nearest Neighbor)法：クラス分類。サンプル数を決めて、多数決で分ける
*データ数に偏りがあると不正確

教師なし
k-means法：クラスタの中心を重心の位置にずらすのをくりかえす。*近いクラスが変わってくため

基礎数学

記述統計：手元のデータの分析を行う
推計統計：手元のデータの背後にある母集団の性質を予測する

DeepLearning

活性化関数：入力->出力をするためのf()の関数全体

ニューラルネットワークの最小単位：ニューロン

バーニーおじさんのルール：学習には必要なパラメータ数の約１０倍のデータが必要であるという経験則
ノーフリーランチ定理：あらゆる問題に対して万能なアルゴリズムは存在しない
醜いアヒルの子定理：機械学習における定式化によって普通のアヒルと醜いアヒルの区別はできない
モラベックのパラドックス：機械にとっては、高度な推論よりも１歳児レベルの知恵や運動スキルを身に着けるほうが遥かに難しい
次元の呪い：次元が増えることで不都合が生じる


ステップ関数＿ー：境のところで微分ができないため、ニューラルネット使えない(単純パーセプトロンと同様)
シグモイド関数_/ー：閾値を超えると1,超えると0に分類。勾配消失問題が起きやすく、現在はあまり用いられない。
ReLU_/：勾配消失問題が起きにくい、現在主流の活性化関数

ソフトマックス：出力の総和を1に正規化。分類の出力付近で使用。

ディープニューラルネットワーク：誤差逆伝搬法とか
入力→予測値、予測値→入力を繰り返すことで、重みを更新して、誤差を勾配降下法で小さくすることを目指す。
誤差の最小化：重みを誤差で微分した値（勾配）が0に近づける

局所最適解：その周辺では誤差の値が小さいが、最小ちを実現するわけではない(微分して0になるけど、一番小さいわけではない、極小値？)
大域的最適解：誤差の値を最も小さくする解(関数のなかで、最も小さくて、微分して0になる、極小値)
停留点：局所最適解でも大域的最適解でもないが、勾配が0になる（極大値？）

DLの目標：目標大域か局所かはわからんので、局所最適解が求められれば誤差の値は小さくなるので妥協点として使われる

鞍点：変曲点？

エポック：訓練データの使用回数
イテレーション：重みの更新回数

逐次学習：訓練データ1つに対してwを1更新。(データの数だけ増える)確率的勾配降下法Stochastic Gradient Descent。

ミニバッチ学習：訓練データいくつかをサンプリング。誤差の総和を小さくするよう*１回*wを更新。ミニバッチ勾配降下法。

バッチ学習：訓練データ全ての誤差を計算し、wを１更新。イテレーション＝エポック。(バッチ)勾配降下法。

強化学習：Deep Q-Network
次元削減：自己符号化器(オートエンコーダ)


DeepLearningの手法

過学習：訓練誤差は小さいのに、汎化誤差が小さくならない（訓練データに寄りすぎてる）
*防ぐ方法が正則化：
　LASSO(不要な説明変数を無視)とか
　Ridge正則化(特徴量選択は行わず、パラメータのノルムを小さく抑える)

ドロップアウト：重み更新時に枝を切る、効果が高い

スパースなデータ：0,1でデータ作る。計算量の削減。



AdaGrad、もめんたむ：勾配降下法の学習率の値に関する手法
蒸留：大きいネットワークの入出力を小さいネットワークに再学習させる手法
モンテカルロ法：乱数で試す

勾配消失問題：入力層で学習が進まなくなる
*中間層で、正規化機能を持たないReLU等を用いると回避が期待できる


DNNの種類

アンサンブル学習

バギング：並列学習 *一概に性能が高いわけではない
ブースティング：逐次学習
ブートストラップ：学習データからランダムにサンプリングとか、サンプリングした部分集合をさす


画像認識に適したもの：Convolutional NN

CNN(畳み込み) ：入力→畳み込み→pooling→畳み込み→pooling→全結合

畳み込み：元の画像の特徴が抽出された小さな画像(特徴マップ)への変換
pooling：平均値、最大値を用いてさらに小さな画像に


時系列ネットワーク、自然言語処理：Recurrent NN(対策、Long Short-Term Memory)

閉路構造（再帰構造をもつ）、過去の情報を保持できる


次元削減

Auto Encoder：入力＝出力<中間層(低次元)
３層、教師なし学習、生息化よりも複雑で非線形な次元削減

主成分分析：
寄与率を調べる→重要度
主成分->意味の推測


敵対的生成Network(Generative Adversarial NetWork : by イアングッドフェロー )：画像生成pix2pix

教師なし学習らしい

生成ネット：訓練データと同じネットワークを生成
識別ネット：訓練データか生成ネットからきたのかを識別

ヤン・ルカんが面白いアイデアって言ってた


DLの研究分野と応用

自然言語処理

過去
セマンティックウェブ：情報リソースに意味を付与
意味ネットワーク：単語同士の意味関係をネットワーク
統計的自然言語処理：言語処理に確率論or統計学的手法を用いる

言語モデル：言語は確率で定義づけられてるとみなす
ニューラル言語モデル：ニューラルネットワークによって近似されてる

隠れマルコフモデル(Hidden Markov Model)：未来の状態が現状態にのみ依存する。自然言語処理では、“状態”を品詞に指すことが多く、動詞の次には名詞がおかれやすいとかの文法を学習するモデルともいえる。

形態素解析→データクレンジング→ベクトル化(BoW)→重要度評価(TF-IDF)

いろんな解析あるなあ

word2vec(skip-gram model手法)：周辺語の予測。ベクトル化して、距離の近い単語の組み合わせによって、意味を捉えたりできる。

Microsoft Tay ：twitterで学習してたけど、アホのせいで停止。

音声合成：ボカロ

google deepmind：wavenetによって調教しなくて良くなった

自立型致死性兵器：LAWS（今はまだない）
アシロマAI原則：AIによる軍拡競争を避ける

中国製造2025：中国の製造業発展のロードマップ
*ドイツのインダストリー4.0に影響



深層強化学習

行動価値関数：ある状態である行動をとることの価値を表す関数。膨大な計算が必要で、DNNで近似計算を行うアイデアを深層強化学習。
Deep Q-Network：行動価値関数の最大化(CNNの一種)

Deep Belief Network：Auto Encoderの関連するDNN

表現学習：データから低次元の特徴を獲得する学習
一気通貫学習：ロボットの一連の動作を１つのDNNで表現する

マルチモーダル情報処理：語幹や体性感覚とかの複数の感覚の情報を組み合わせて処理すること

AIの著作権について：AIの創作物に著作権は認められていない
*人がAIを通した場合、著作権は発生

学習済みモデル：学習によりすでにパラメータの調節が済んでいるNNで、技術・契約・法律の３つで保護。

技術：学習済みモデルのコピーを技術的工夫で防ぐ
契約：契約に基づき、利用条件や、条件違反時の賠償責任を定めて防ぐ
法律：知的財産権を保護する法律（特許法、著作権法、不正競争防止法）等によって防ぐ

自動運転

Society of Automotive Engineer：自動運転のレベルの定義

0.全部人間
1.機械が時々支援
2.機械が1部できるけど、運転環境を人間が監視して、人間側が指示してやってもらう
3.機械側が要請した時、人間がやる
4.人間やらなくていいけど、条件下でのみ運行可能
5.どんな条件下でも機械ができる

AIの責任：不法行為責任は追わないといけない、製造物責任も
*製造物責任は動産のみなので、プログラムのみには該当しない


google scholar：論文の検索エンジン
coursera：大学講義を受講できるonline講座
arxiv：研究論文の公開閲覧ができるwebsite
openAI　gym：自作の強化学習の試験プラットフォーム

keras：tensorflowのラッパー
chainer → pytorch