G検定メモ⑰　G検定試験前日に発狂しながら書きなぐったメモを公開する

前日に黒本解いたらダメダメで発狂しながら書きなぐったメモが出てきたのでアップするよ
メモしたら覚えられたよ

---------------------------------------------------------------------


#第一章　人工知能を巡る歴史と動向

ニューラルネットワーク
ニューラルネットワークとは、ニューロンを多層に組み合わせた予測器

#第二章　機械学習の基礎

強化学習
強化学習は、回帰問題と分類問題　が出来る
回帰問題：線形回帰
分類問題：ロジスティック回帰（シグモイド関数）、ランダムフォレスト（決定木）、ブースティング（逐次 的に　反対はバギング：一気に並列に）、サポートベクターマシンSVM（マージン最大化、カーネル関数、 カーネルトリック：高次元写像）、ニューラルネットワーク（NN：活性化関数、誤差逆伝播法、隠れ層、 パーセプトロン）

教師なし学習は、クラスタ分析、クラスタリング
手法：k-means（適当に分けて、最適なところに割り振るを繰り返す）、主成分分析PCA（次元削減を行う）

教師なしの手法
クラスタリング　と　次元削減
クラスタリング　k-means
次元削減　主成分分析PCA

データの前処理
正規化　データのスケールを合わせる
標準化　平均０、分散１に変換
白色化　無相関化+標準化

基礎集計　basic aggregation
前処理よりも前に行う
・各種代表地　平均、分散、標準偏差　を計算する
・プロットして傾向を調べる
・相関行列を表示し、傾向を調べる

●特徴量エンジリアニング
モデルが認識しやすい特徴をデータから作る事
例）カテゴリカル変数（性別や髪の色など、何かの種類を表す変数）
カテゴリカル変数であると解る形に変換（encording）する
たった一つの成分だけが１、残りの成分は０という形の特徴量（ベクトル）に変換する
この形の事を、one-hot-encordingと呼ぶ
●重回帰分析
1つの目的変数を複数の説明変数で予測する
・多重共線性
説明変数の中に、相関係数が高い組み合わせがある事

教師あり学習　データの検証

交差検証
訓練データとテストデータに分けて、過学習の対策を行う

交差検証には2種類ある
１．ホールドアウト法：訓練データとテストデータに分割
２．ｋ－分割交差検証：訓練データとテストデータに分割をｋ回行う

教師あり学習
教師データをつかって学習する手法
入力に対する正解ラベルを予測する手法
・回帰は入力に対応する出力値を予測する
・分類はデータがぞくするくらすを予測する

教師なし学習
データのほんしつてきなこうぞうを浮かび上がらせる手法
強化学習
収益を最大化する方策を獲得する手法


クラス分類とクラスタリングの違い
クラス分類はあらかじめクラスを設定する
クラスタリングは設定しない

クラス分類は教師あり学習
クラスタリングは教師なし学習


#第四章　機械学習の具体的手法

回帰の代表的な手法
線形回帰

線形回帰　２つの手法

・単回帰分析
1つの説明変数から目的変数を予測する

・重回帰分析
複数の説明変数から目的変数を予測する

説明変数：手掛かりとなる変数
目的変数：予測したい変数

例　気温と飲み物
説明変数　その日の気温
目的変数　その日の飲み物の売上


●重回帰分析
多重共線性に注意する必要あります！！
多重共線性はマルチコと呼ばれています。
マルチコはmulticollinearityの略です

多重共線性の理解には、　相関関数　の理解が必須！！
相関関数の特徴
特徴量同士の相関の　正負　と　強さ　を表す指標
相関係数は常に-1以上1以下の値をとります。
１に近いほど強い正
-1に近いほど強い負

多重共線性マルチコ
相関関数
相関を　正負　と　強さ　で表す
１からー1

多重共線性とは、相関係数が高い特徴量の組を同時に説明変数で選ぶと、予測が上手くいかなかくなる現象
特徴量エンジニアリングにおいて、
相関係数がー１または１に近い特徴量のペア　を作らないように、
各ペアの相関係数を観察し特徴量をうまく取り除く必要があるのです。

正の相関、負の相関、無相関の違い
正の相関　ｘ増えるとｙ増える
負の相関　ｘ増えるとｙ減る
無相関　　ばらばら

①入力ベクトルの各要素がパーセプトロンに入力される
②それぞれの入力が枝を通って右に伝わる、この時枝の重みがにゅうりょに乗算される
③それらをすべて加えてそう入力uが計算される
④U＜０　ならクラス０、U＞０ならクラス１
U＝0.3*1+0.1*2+0.2*1＝0.3＞0
U=1　Y=1

重み付き和


パーセプトロンは重みを調整する事で、様々識別器になる
パーセプトロンは線形分類に限られる
直線を使って二つのクラスに分類できる問題（２クラス分類）を線系分離可能という
線形分離可能

論理ゲートとは、二つの０，１入力に対して
あるルールで一つの０，１出力を行う計算機
論理ゲートを各入力をクラス０とクラス1に分類する２クラス分類問題とみなすと
XORゲートだけが線形分離不可能である


●サポートベクターマシンSVM
マージン最大化

誤分類を許容するための工夫
スラック変数

誤分類が３つまでなら許すよ！
スラック変数＝３
境界線で分けられたデータ集合に３つまで間違ったデータが許される
このようなパラメータをハイパーパラメータと言う

学習前にエンジニアが決めるパラメータがハイパーパラメータ
学習によって最適化する変数がパラメータ

線形分類できないものは、カーネル法で対応
高次元に写像する　カーネルトリック

カーネルトリックの問題点
大量の計算が必要
解決策　カーネルトリックで行うと計算量を抑えられる

●決定木
不順が最も減少するように条件分岐を作り、データをふりわける
それを繰り返す

負純度　クラスの混じり具合
ジニ係数やエントロピー　が負純度の代表例



ロジスティック回帰
線形回帰を分類問題に応用したアルゴリズム
手順
①対数オッズと呼ばれる値を、重回帰分析により予測
②対数オッズにロジット変換を施すことで暮らすiに属する確率piの予測値を求める
③各クラスに属する確率を計算し、最大確立を実現するクラスがデータが属するクラスと予測する

対数オッズ
log(pi/1-pi）
ロジット変換を行う事で、出力地が０から１の間の値に正規化されるので、確率の解釈が可能になる。

線形変換、フーリエ、ウェーブレット変換は正規化行わない


正則化：過学習抑制手法
標準化：データの平均を０、標準偏差　分散を１
正規化　データを０－１におさまるようにスケーリングする

●ｋNN法　最近傍法
データから近い順にｋ個のデータを見て、それらの多数決によって所属クラスを決定するという方法

ｋ＝３　●●△なのでで●
ｋ＝５　●●△△△なので△

ｋはハイパーパラメータなのでエンジニアが決める

データにかたよりがあると、はんていけっかが不正確になる
・各クラスのデータ数の偏りがない
・各クラスが良く分かれている
時しか精度が上がらないという弱点がある


●クラスタリング
クラスタリングは教師なし学習の一種
データをいくつかのくらすたに分ける
k-means
データをｋこのクラスタに分ける
クラスタの中心を重心の位置にずらす　を繰り返す方法

#第五章　ディープラーニングの概要

活性化関数の問題

初期
ステップ関数　単純パーセプトロンと同じになる
その後
シグモイド関数
ReLU関数　レル
ReLUは勾配消失が起きにくく形が簡単
現在主流の活性化関数
ソフトマックス関数は出力付近で使う事が多い

勾配降下法
誤差を最小化する重みを求める
重みは次元が高く複雑である

局所最適解　その周辺では誤差の値が一番小さいが、最小ではない
大域的最適解　誤差の値を最も小さくする解　これを求めないといけない
停留点　局所最適解でも大域最適解でもないが、勾配が０になる点

停留点　覚えておく
勾配０になる点　トラップ

覚えるべき言葉

エポック・・・訓練データを何度学習に用いたか
イテレーション・・・重みを何度更新したか

エポック、イテレーション　聞いたことなかった、、、
覚えないとやばいな。
エポック　何度用いたか、イテレーション何度更新したか
エポック何回用いた、イテレーション何回更新した

重み更新のタイミング１：逐次学習
訓練データ１つ　に対して重みを1回更新する
データ1つごとにイテレーションが増える

重み更新のタイミング２：ミニバッチ学習
ミニバッチとは、いくつかの訓練データからランダムにサンプリングした地井さんあデータのあつまりをさします。
ミニバッチ学習はミニバッチに含まれるデータすべてについて誤差の総和を計算し、その総和を小さくするように重みを1回更新します
これをミニバッチ勾配降下法と言います。

重み更新のタイミング３：バッチ学習
訓練データすべての誤差を計算し、重みを一回更新します。
イテレーションとエポックが等しい

ブートストラップ
ランダムにデータをサンプルする手法の一つ

#第六章　ディープラーニングの手法

過学習：訓練誤差は小さいにもかかわらず、汎化誤差が小さくならない状態のこと
訓練誤差：学習に用いた訓練データに対する誤差
汎化誤差：訓練に用いていない未知の母集団に対する誤差の期待値で、これが小さくならないと言うことは未知のデータに対して正確な予測を行えなくなってしまっていることを示す

過学習を抑制する方法
・正則化　LASSOなど
誤差関数にパラメータのノルムによる正則化項を付け加える　正則化（LASSO）
・ドロップアウト
重み更新の際に一定の割合でランダムに枝を無効化する手法
単純だが、効果が高い

AdaGrad,モメンタム→勾配降下法の学習率の値に関する手法
蒸留→大きいネットワークの入出力を地位差ネットワークに再学習させる手法
モンテカルロ法→シミュレーションや数値計算を乱数で行う手法

RNN、再帰型ニューラルネットワーク、リカレントニューラルネットワーク
内部に閉路を持つニューラルネットワーク
閉路とは、行って戻ってくる経路
×　１０．×アA　　　イB　　　ウC　　　エB　　　オB
GAN敵対的生成ネットワーク
イアングッドフェローらによって考案された
生成ネットワークと識別ネットワークからなる教師なし学習の手法
ヤンルカンが、機械学習において、この１０年で最も面白いアイデアであると形容した

#第七章　ディープラーニングの研究分野

音声認識
・隠れマルコフモデル
文章として単語のつながりを確率的に表現し、文用の形を推測する。
隠れマルコフモデル（HMM:Hidden Markov Model)
未来の状態が現在にのみ依存する　というマルコフモデルの一つ
自然言語処理では、状態は品詞を指すことが多く、同市の次には名詞が置かれやすいといった文を構成するルールを学習するモデル
現在は、この隠れマルコフモデルがディープラーニングに着替えられ、飛躍的な認識精度が向上した。
×　２．C
自然言語処理のフロー
①形態素解析を用いて、文章を単語などの最小単位に切り分ける
②データのクレンジングにより、不要な文字列を取り除く
③Bow(Bag-of-Words)などを用いて形態素解析を行ったデータをベクトルの形式に変換する
④TF-IDFなどを用いて、単語の重要度を評価する

分解して、データきれいにして、ベクトルにして、評価する

自然言語処理の解析技術
形態素解析：テキストデータから文法、単語に基づき、言語で意味を持つ最小単位である形態素に分割し、その形態素の品詞を判定すること
構文解析：形態素解析を元にして、その形態素間の構文的関係を解析すること。
含意関係解析：二つの文の間に含意関係が成立するかを判定
意味解析：構文解析を元に、意味を持つまとまりを判定すること
文脈解析：文単位で構造や意味を考えること
LDA：LatentDirichletAllocationの略。文中の単語から、何のトピックかを推定する教師なし機械学習手法。
ディリクレ分布が用いられる。各単語が　隠れたあるトピック　から、生成されているものとし、そのトピックを推定する
LSI：Latent Smantic Indexingの略。文章ベクトルにおいて、複数の文書に共通に現れる単語を解析することによって、低次元の潜在意味空間を構成する方法。特異値分解が用いられる。

形態素解析：これは覚えておくこと
テキストデータから、文法・単語に基づき、言語で意味を持つ最小単位である形態素に分割する
その形態素の品詞を判定する。

●Word2vecワードツーベック
・単語をベクトルとして表現する
・意味の値川や次に示す「計算のアナロジー」を行えるようにする仕組み
２０１３年グーグルで開発
Word2vecを用いることで、単語同士の意味関係を上手く捉え、扱うことができる
［王様］-［男］+［女］＝女王様
みたいなのが出来るようになる

・教科学習
ある状態である行動をとることの価値を表す関数
DQNはCNNの一種
DQNは学習が収束するように工夫された畳み込みニューラルネットワークの一種
アルファーゴにはDQNが用いられている

・ロボティクス
ロボットに関連する一連の研究分野
ロボットの動作制御に、モンテカルロ法やQ学習などの教科学習手法を用いる
Q学習　ある行動の良さを学習する教科学習

・表現学習
低次元の特徴を獲得する学習

・一気通貫学習
ロボットの一連の動作を一つのディープニューラルネットワークで実現しようとする

・マルチモーダルな情報処理
五感や体性感覚など複数の感覚情報を組み合わせて処理すること。

AIによる創作物権利に関する法律はまだない
ひとがAI を道具として利用した捜索には著作権が発生する

学習済みモデルの保護に関する問題
学習済みモデル
学習によりすでにパラメータ調整がすんでいるNN
技術・契約・法律の三つで保護される
技術　技術的工夫で学習済みモデルのコピーを防ぐ
契約　契約に基づき様々な利用条件を付して、保護する
法律　知的財産を保護する法律

#その他

・自動運転の6段階レベル
SAE３０１６において、０から５の６段階自動運転レベル分けがされている

レベル0（自動運転なし）
ドライバーが「動的運転タスク」を実行します。たとえば、緊急ブレーキ・システムは厳密には車を「運転」しないので、自動とはみなされない。

レベル1（運転支援）
クルーズコントロールなどがこれにあたる。
ステアリング操作やブレーキなどの他の運転要素を人間のドライバーが監視するため、レベル1とみなされる。

レベル2（部分的自動運転）
先進運転支援システム（ADAS）を意味します。自動車がステアリング操作と加減速操作の両方を制御できます。
ハンドルが勝手に動くけど、人がハンドルを握ってなきゃだめだよ。自動運転の段階には達していない。

レベル3（条件付き自動運転）←今ここ
「環境検出」機能があり、遅い車は加速して追い越すなど、情報に基づいて自己判断出来る
ドライバーは注意を怠らず、自分で操作する心構えをしている必要がある

レベル4（高度な自動運転）
レベル3とレベル4の自動化の主な違いは、システムに不具合や故障があった場合に、レベル4では自動車が操作できるという点
人が手動に切り替えて操作することは出来る

レベル5（完全自動運転）
自動車は人間による注意が不要で、「動的運転タスク」を排除します。レベル5の自動車にはステアリングホイールやアクセルペダル/ブレーキペダルすらありません。

・AIがおかした犯罪の過失責任