Deep Learning全体像理解の為に「深層学習教科書ディープラーニング G検定(ジェネラリスト) 公式テキスト」を読んだので纏める!!!
結論、DLの基礎知識が丁寧に網羅されている素晴らしい内容でした。
先ずは本の概要をAmazonから抜粋。
【本書の特徴】
1)試験運営団体である「日本ディープラーニング協会」が執筆。
2)各章末には、練習問題つき。試験勉強に最適。
3)最新シラバス「JDLA Deep Learning for GENERAL 2018」に完全準拠。
4)ディープラーニングについて最新事情も踏まえ学ぶことができる。
【対象読者】
・「ディープラーニング G検定(ジェネラリスト検定)」を受験しようと思っている人
・ディープラーニングについてこれから広く学びたい人
・ディープラーニングを事業活用しようと思っている人
【G検定とは】
・ディープラーニングを事業に活かすための知識を有しているかを検定する試験
早速行きます。第1章「人工知能(AI)とは」
1956年、アメリカ、ダートマス会議にて人工知能研究者であるジョンマッカーシーが「Artificial Intelligence」という言葉を使用(会議にはマーヴィンミンスキーも参加)。
松尾豊教授は「人工的につくられた人間のような知能、ないしはそれをつくる技術」と定義。(そもそも知能の定義も曖昧な為、統一された定義は無い)
1946年、アメリカ、ペンシルバニア大学でENIAC(17,468本の真空管を使った世界初の汎用電子式コンピューター)が誕生。
AIブームと冬の時代について:
第1次AIブーム(推論と探索の時代、1950年代後半〜1960年代)、東西冷戦下で米露機械翻訳が注目される。迷路等簡単な問題(トイプロブレム)は解けても現実の複雑な問題は解けず、1970年代に冬の時代突入。
第2次AIブーム(知識の時代、1980年代)、知識を入れると賢くなるアプローチが全盛を迎え、大量の専門知識を詰め込んだエキスパートシステムが生まれる。しかし、知識の蓄積と管理が難しい事がわかり1995年から冬の時代再突入。
第3次AIブーム(2010年〜)、特徴量を人工知能自ら習得するDeep Learningの登場が火付け役。
→(所感)二回の冬の時代を超えての現在のブーム到来。データ量と計算能力Up、更に既存ビジネスでもImpactが出ている事を考えると、ここからはブーム一辺倒になるはず。
第2章「人工知能をめぐる動向」
迷路問題は探索木(場合分け)に置き換えられ、幅優先(最短距離でゴールに辿り着く解を取得、メモリ大量消費)と深さ優先探索(最適解かは分からない、メモリ消費少ない)の2種のアプローチあり。
人工知能が自律的に行動計画を作成する技術をプラニングと言い、前提条件・行動・結果の3つを組み合わせて記述するSTRIPSが有名(70年に Terry WinogradによってSHRDLUが開発)。
ボードゲームの難易度はオセロ(10の60乗通りの組み合わせ)、チェス(120乗)、将棋(220乗)、囲碁(360乗)。観測可能な宇宙全体の水素原子の数は10の80乗個。
ゲーム戦略はMini-Max法(自分が指す時スコア最大、相手が指す時スコア最小)を使う。
モンテカルロ法では終局(プレイアウト)させ、勝率の高い打ち筋を探す。
Alpha GoではDeep Learningの技術を使い人間の思考法をCPで実現し、セドルに勝利。将棋の場合は2駒でなく3駒の関係を使って盤面評価する仕組みを取り入れた事で強力に。
人工無脳(チャットボット等ルールベースの返答をするだけで実際に会話を理解していないCP Program)の元祖はELIZA(ジョジェフ・ワイゼンバウム開発)。
エキスパートシステムは知識を詰め込みその分野の専門家の様に振る舞う。代表作は1970年代にスタンフォードで開発されたMYCIN(血液中のバクテリア診断支援、抗生物質処方)。
全ての情報をCPに取り込むCycプロジェクトが1984年にダグラス・レナートによって開始(情報多すぎて未完)。
ontologyとは知識を記述する時に用いる言葉・意味・関係性を他の人とも共有できる様に明確に定義するもの。
IBMワトソンはWikipediaの情報をもとにライトウェイト・オントロジーを生成して解答(中身は質問に含まれているキーワードに関連しそうな答えを高速に検索してるだけで理解はしていない)
1990年に Tim Berners-Leeによって Webページが作成され、98年にGoogle検索エンジンが発明される。
パーセプトロンの限界はBack propagationで克服できる事が示され、多層にしても学習精度が上がらない問題は入力と出力を同じにする”自己符号化器”を元に改善。
2012年、ILSVRCでSuperVisionが優勝した事によりDLに焦点が当たる。
→ 正に巨人の肩の上。先人の積み重ねの上に今があるなと。
→人工無脳と言われる様に無感情&無創造性の事象ならAIにどんどん任すべき。今後脳の理解が進んで感情を込めて創造的な事ができる様になるとGameが変わる。
第3章「人工知能分野の問題」
フレーム問題は69年にジョン・マッカーシーとパトリック・ヘイズが提唱した「今しようとしてる事に関係のあることだけを選び出す事が、実は難しい」という問題(洞窟爆弾ロボの例)。
チューリングテスト(人間か人工知能か見極めるテスト)
強いAI(人間の心を持つ)と弱いAI(心はなく有用な道具)、米国哲学者ジョン・サールが80年に発表。中国語の部屋という思考実験を実施。
シンボルグラウンディング問題(シマウマで縞々と馬を結び付けられない)。
シンギュラリティ、2045年に到来、人工知能が無限連鎖的に人工知能を生み出し人間世界を凌駕。
→種々の問題は人間と同じ様に〇〇できない、という事なら尚更成功事例である人間の脳を理解して転用するのが早いという解に行き着くのは分かる。人間に不足する永続性の部分を人工知能に任せれば完全自動化工場の完成。失われる感性とか手紙の暖かさとか待ち合わせの緊張感とかあるけどNo way to backなので進化を楽しむしかない。
第4章「機械学習の具体的手法」
教師あり学習、教師なし学習、強化学習の3本柱
教師あり学習
Linear Regression:直線で関係性を説明(一番シンプル)
Logistic Regression:分類に使う。Sigmoid関数で0か1に分類(スパムメールか否か)。多数分類の場合はSoft Max。
Random Forest:特徴量をランダムに抽出して決定木をランダムに複数。データも一部をランダムに使用(ブートストラップサンプリング)。それぞれの決定木から多数決で予測作成。
Bagging:全体から一部のデータを複数のモデルを用いて学習する手法。モデルを並列作成。
Boosting:全体から一部のデータを複数のモデルを用いて学習する手法。モデルを逐次作成。前のモデルで誤認識したデータを優先的に分類する等重み付けを行い。最終的に1つモデルを出力。AdaBoost、Gradient Boost、XgBoostが有名。(高精度低速)
SVM:各データ点と距離が最大になる様に境界線を求める事でパターン分類を行う。高次元写像後の空間で線形分類するアプローチを取る。写像に用いる関数をカーネル関数と言い、写像することをカーネルトリックと言う。
Neural Network:脳を模倣。ニューロンは神経回路を構成、このネットワークにどの程度電気信号を伝えるかでパターン認識をする。
教師なし学習
k- means:データをk個に分類、アプローチは1適当に各データをk個のクラスタに分類、2クラスタの重心を求める、3k個の重心と各データの距離を求め、最近クラスタに再振り分け、4重心が変化しなくなるまで2、3回繰り返す。
主成分分析:相関のない少数の特徴に次元削減するのが目的。
k–分割交差検証:交差検証の際にテストと訓練データを複数回分割する方法(ホールドアウト検証は1回分割)
L1正則化:一部のパラメーターの値を0にすることで特徴選択を行う(線形回帰に適用するとラッソ回帰)
L2正則化:パラメーターの大きさに応じてゼロに近づける事で汎化された滑らかなモデルを得る(リッジ回帰)両者を組み合わせるとElastic Net。
正解率(Accuracy)、再現率(Recall)、適合率(Precision)は混同行列を参考に覚えるべし。F値は再現率と適合率の調和平均。
→Kaggle初心者としてはこの辺り整理して使いこなしていきたい。賞金とGMを目指す。。。
第5章「Deep Learningの概要」
隠れ層は言ってしまえば「入力と出力を対応づける関数」。
元々Sigmoid関数の微分では最大値が0.25の為勾配消失問題が起こっていた。また単純パーセプトロンは線形分類しかできない。
06年に Geoffrey HintonがAutoencoder/自己符号化器と言う問題解決手法を提唱。可視層と隠れ層の2層からなり、隠れ層に圧縮(要約)された情報がEncodeされ可視層にDecodeされる。
HintonはAutoencoderを積み重ねるStacked Autoencoderを順番に学習する手法を考案。
最後の仕上げをFine Tuningと言う(事前学習で隠れ層の重みが調整されているので深層でも誤差が逆伝搬している)。
教師なしでは深層信念ネットワークは制限付きボルツマシンが用いられている。
CPU:CP全般の作業処理を担う。スマホ動作を順番にする能力に長ける。
GPU:画像処理に関する演算を行う。並列演算処理に強い。NVIDIAが開発をリード。
GPGPU:画像以外の目的に最適化されたGPU
TPU:Googleが開発中。Tensor処理に最適化。
データ量の目安はないが、バーニーおじさんのルールと呼ばれる「パラメータ数の10倍」という経験則はある。
DLはOver Fittingし易い。
DLの場合データ数が多くホールドアウトで十分な事が多い。
→こう見ると Geoffrey Hintonの功績は偉大。News PicksのInterviewで冬の時代も兎に角Neural Netの正しさを証明したかったと言ってたけど、勾配消失含めた問題を悉く解決してきている。知性の上に成り立つ便利さを享受していることに感謝(二度目)。この辺りは実装しながら体に染み込ませていきたい。面白い。
第6章「Deep Learningの手法」
Tanh関数:−1〜1を取り微分の最大値は1の為ブーム以前は人気。但し微分は1以下で0に近い数字となる為勾配消失問題を解決はできず、、
ReLU関数:tanhに代わり現在最も使われている関数。xが0より大きい場合微分値は常に0。0以下の微分が0になる事を防ぐ為Leaky ReLUも使われる。
機械学習が目指すのは「予測値と実際値の誤差を無くす事」、誤差を誤差関数を定義して最小化問題にしてしまう。
関数の最小化といえば微分。y=x2の最小値を求める場合、y’=2xを求める様にNeural Networkもそれぞれの層の重みで誤差関数を偏微分した値が0になる重みを求めればいい。微分は微分でも偏微分。
→ この辺りがよく分かってなくて(超絶基本やけど)頭スッキリ。
Neural Networkは多次元の為アルコリズムを用いて最適解を探索する(勾配降下法使う!)
勾配降下法は傾きが0(=平ら)までk回計算繰り返し実行。
勾配降下法 : x(k+1) = x(k) - αf’(x(k)) (α>0)
Kはエポック(何回繰り返し計算するか)、αは学習率(勾配に沿って一度にどれだけ降りていくか、これで最適解へのアプローチを決める)
Neural Networkでは各パラメータ(重み)に対して勾配降下法を適用して最適値を求める。
鞍点問題にはRMSpropやAdamを使う。
機械学習最大の敵Over Fittingに対する手法の一つにドロップアウト(ランダムにニューロンをドロップアウトさせる)。
別手法のEarly StoppingはTrain DataにFitする前に学習を止めてしまう事。 Geoffrey Hinton said it’s ”Beautiful Free Lunch”
上記学習途中以外に学習前の処理に正規化(各特徴量を0〜1)がある(画像は255)。
他に、各特徴量を平均0、分散1の標準正規分布に変換する処理を標準化、無相関化した上で標準化を行う処理を白色化と言う。
勾配降下法の初期値設定として活性化関数のSigmoidにタイステはXavierの初期値、ReLUに対してはHeの初期値を使う。
初期値工夫以前に各層に伝わるデータをその層で正規化しちゃうBatch Normalizationも有り。
Convolutional Neural Network(CNN)は画像認識に有用。大元のアプローチは人間が持つ視覚野の神経細胞の2つの働きを模したもの。
単純型細胞(S細胞):画像の濃淡パターン(特徴)を検出
複雑型細胞(C細胞):物体の位置が変動しても同一物体とみなす
1998年にヤンルカンによってCNNモデルのLeNetが発表される。畳み込み層とプーリング層の2種類の層を交互に複数組み合わせた構造。
現在のCNNはNN同様Back Propagation使う。
ConvolutionalはKernelというFilterを用いて画像から特徴を抽出する操作で、移動不変性を獲得し「位置のズレ」に強いモデルができる。
→人間(他の動物も)よく出来てるな。CPが硬直的なのに対して人間は柔軟性が高い。それを数式で打ち込めるのはもっと凄い。人間の理解進む、AIが進化する、Singuralityが来ると言うStep。
プーリングは4マスの最大値や平均値を取る手法。
CNNでは畳み込み(C)とプーリングを繰り返した後、全結合層というNNと同じ隠れ層・出力層に接続する。でも最近はあまり使わず「一つの特徴マップに一つのクラスを対応させることで分類を行うGlobal Average Pooling」処理がよく用いられる。
ILSVRC優勝のAlexNetは畳み込み→P→畳→P→畳→畳→畳→P→全結合層(3層)の構造。(VGGやGoogle Netが記録塗り替え済)
深層だと計算量が多くなるので、1*1や3*3のような小さなサイズの畳み込みFilterを差し込んで次元(計算量)を削減する。Google NetではInception modulesを更生することで並列計算をし易くしてる。
更にSkip Connectionで層をSkipした結合作る「ResNet」も有用。
Image Netで学習済みモデルは公開されていて使える(転移学習)。
Recurrent Neural Network(RNN)は時間依存性を学習することを可能としたモデル。自然言語処理でよく用いられる。
→過去情報からの重みづけは明らかに大事。
逆伝播する誤差も過去に遡って反映させる(実際は勾配降下法で式を入れていくだけ)Back Propagation Through Time(BPTT)と言う。
→数式で表してるのがやっぱり凄い(また言うてる)。
RNNは過去に遡るに連れて勾配が消える勾配消失問題が起こり、今必要ないけど将来要るといった状態も起こる。その解決策がLong Short Term Memory(LSTM)でLSTMブロック(セルはConstant Error Carousel)を導入し時系列情報をうまく保持する。
構成は入力ゲート(入力重み衝突対策)、出力ゲート(出力重み衝突対策)、忘却ゲート(リセット機能)の3つから成る。
LSTMを簡略化したGated Recurrent Neural Network(GRU)も用いられる。
他にも過去未来双方向で学習させるBidirectional RNN、入力だけでなく出力も時系列で行うRNN Encoder - Decoder、時間の重みをネットワークに組み込んだAttentionがある。
強化学習は「行動を学習する仕組み」。
2013年にDeep Mindがブロック崩し動画(人間を上回る結果)を公開し、手法としてQ Leaningが用いられていた為DQN(Deep Q Network(Qは行動価値関数))と呼ばれている。またAlpha碁(打手探索)にはモンテカルロ木探索が使われている。
環境・状態・行動の中でも状態表現が難しかった所に深層学習を用いた深層強化学習が登場しBreak Through。
生成モデルである変分オートコーダはVAE、敵対的生成ネットワークはGAN(画像分野で研究が活発)
第7章「Deep Learning 研究分野」
Image Netの画像認識コンテストはLocation TaskとDetection Taskの2課題あり。
Region of Interest(ROI)毎に個別にCNNを呼び出していた為時間がかかっていたが、Fast RCNNが考案され時間短縮(16フレーム/秒)。
その後発展形でYOLOやSSDが生まれる。何も関心領域の切り出しと、物体認識を高速実行できるモデル。
Semantic Segmentationはより「詳細な領域分割を得るモデル」でFully Convolutional Net Work(FCN)で実現可能。
Instance Segmentationでは「個々の物体を認識」
自然言語処理として主なのはword2vec、ニューラル画像脚注付け、ニューラルチューリングマシン。
word2vecは文字記号をベクトルで表す仕組み。「単語の意味は周辺の単語で決まる」と言う言語学の主張をネットワークで表現したもの。Skip-gram(単語から周辺の単語を予測)、CBOW(周辺単語から単語を予測)の2種あり。
Word2vecの後継にfastText(2013年にトマス・ミコロフが開発、単語表現に文字情報も含め訓練データに無い単語(OOV)を表現する事可能、文字ベースのn-gramを用いて推定する)とELMo(2層の双方向RN言語モデル内部状態から計算され同じくOOVでも意味表現得られる)。
これらがマルチタスク言語モデル(次文前文予測、機会翻訳、構文解析、自然言語推論が可能)に繋がる。
画像認識をするCNNとLanguage Model(LM)としてRNNを組み合わせるとNeural Image Captioning (NIC)ができる。画像認識モデルの全結合直下層の情報を言語生成用RNNの中間層初期値として用いるのがPoint!
RNNの応用分野として経路案内に使えるNerural Turing Machines(チューリングマシンをNNで実現する)がある。
音声認識・合成におけるRNNの応用としてWaveNetがあり、SmartSpeakerに使われる。
強化学習もAlpha Go Shock以降進化しており、value function base,、Q function base、model baseで改善されている(全部入れ込むRainbowモデルが強い、全部乗せ的な。。。)。また過去の棋譜に基づかず0からSelf Playで学ぶ方が強い。
因みにPerceptronはRNNではない。
ロボット制御等で用いられる入出力に設計者の介入を一切必要としない試みを end to end learningとよぶ。
複数の信号源の情報を用いた外界の表現を学習することをマルチモーダル学習という。
第8章「Deep Learningの応用に向けて(産業への応用)
自動車部品の不良品検出(Autencoder等複数を組み合わせ)、入力画像と復元画像間の差分画像で復元できない特徴があれば欠陥品。
射出成形機の予防保全。逆流防止弁の磨耗状態と交換時期を推測。
→事故を未然に防げるのが魅力
減量検査装置(良品じゃがいもとの違いがあるものを不良品として検出)by キューピー
慢性胃炎から早期胃がんを抽出(医師でも難しい)
大腸内視鏡検査支援(2019年の実用化イメージ)by NEC
創薬では化合物デザイン提案プロセスを代替&効率化。
ゲノム解析(2017年にGoogleがDeepVariantを発表、ゲノム配列や」個人を特定できる位詳細なレベルの遺伝子相違点を発見)
株価予測(Sentimentに動かされない短期のみ)、主に時系列解析系DLで実施。
→過去データから予測可能なRoutine Workを次々と代替。確かにこれで労働コストを大幅削減できれば事業として成り立つ。GS本社の侍クオンツの様にインドのTeamと連携して資産運用したいね。
第9章「Deep Learningの応用に向けて(法律・倫理・現行の議論)
契約面ではアセスメント段階、Poc段階、開発段階、追加学習段階に分けて其々の段階で契約結ぶと良い。
個人情報を扱う場合利用目的をできる限り特定する(個人情報保護法15条1項)、また2018年5月にEU一般データ保護規則(GDPR、データ保持者の権利を強化する規則)が施行された。
2018年4月にはGoogle社員3000人がAIを軍事利用する米国防省プロジェクトからの撤退を要請。
→直近のG検定ではこの辺りが詳しく出された様子。世界的に話題なのでもちろん大事やな。適切な規制ができると良いな。
所感:
やはり公式テキストと言うことで非常に網羅的。CourseraのDLコースで100時間くらいかけて学んだ内容も盛り込まれてて改めて基礎を理解できた感覚あり(狙い通り)。
Kaggle本読んでコンペ参戦しつつ、ハンタハンターで例える機械学習エンジニアに必要な力って奴を身につけていこう。そして3ヶ月後目処に資産運用のアルコリズム実装して投資開始しよ。
この記事が気に入ったらサポートをしてみませんか?