SlideShare a Scribd company logo
1 of 51
Download to read offline
Deep Learning入門
2018年6月24日
内山 良介
step63r
「AIは単なるプログラムではない」
「AIは勝手に賢くなる」
「いずれ人間 vs AIの戦争が起こる」
ありません
AIとは
Artificial Intelligence
Machine Learning
Deep Learning
Artificial Intelligence
• 弱いAI
• 特化型AI
• 汎用型AI
• 強いAI
Machine Learning
• 教師あり学習
• 回帰
• 分類
• 教師なし学習
• クラスタリング
• 強化学習
Deep Learning
• DNN (Deep Neural Network)
• CNN (Convolutional Neural Network)
• RNN (Recurrent Neural Network)
AIとは、認知の真似ごとである
認知 (Recognition)
これはネコです これはネコです
人間 AI
四足歩行
ヒゲがある
もふもふ
Deep Learningとは
Deep Learningとは、脳神経を真似したものである
ニューロン
ニューロン
(神経細胞)
𝜃 𝑦𝑥2
𝑥1
𝑥3
𝑤1
𝑤2
𝑤3
モデル化
数理モデル化されたニューロン
人間は「経験」と「確率」で認知している
まっすぐだから「1」かな?
上に横棒があるから「7」にも見える
折り返しがあるのは「9」である可能性も高い
神経伝達を活性化関数として模造
ニューロン
(神経細胞)
𝜃 𝑦𝑥2
𝑥1
𝑥3
𝑤1
𝑤2
𝑤3
モデル化
数理モデル化されたニューロン
活性化関数
活性化関数の例
シグモイド関数
活性化関数の例
ハイパボリックタンジェント
活性化関数の例
ステップ関数
活性化関数の例
ReLU関数
ニューラルネットワーク
入力層 中間層 出力層
活性化関数
出力層の設計
恒等関数
出力層の設計
ソフトマックス関数
Demo
PythonによるNeural Networkの実装
分析プロセスの3要素
分析プロセスの3要素
訓練
Training
テスト
Testing
検証
Validation
分析プロセスの3要素
訓練
Training
テスト
Testing
検証
Validation
訓練とは
入力 モデル 出力
入力データを学習し、
モデルを構築
学習モデルの抽象化
𝒚 = 𝑤0 𝑥0 + 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝒘3 𝒙3 + 𝑤4 𝑥4 + 𝑤5 𝑥5 + ⋯ + 𝒃
重み(入力の重要度)
入力データ
確率的なアウトプット
バイアス
訓練とは、パラメータ決めである
確率的勾配降下法(SGD)
損失関数が最小値を取る値(重み)を求める
𝑥0 = 𝑥0 − 𝜂
𝜕𝑓
𝜕𝑥0
𝑥1 = 𝑥1 − 𝜂
𝜕𝑓
𝜕𝑥1
損失関数 𝑓 に対する 𝑥𝑖 の偏微分
SGDによる 𝑥0
2
+ 𝑥1
2
の最小値近似
分析プロセスの3要素
訓練
Training
テスト
Testing
検証
Validation
過学習(Overfitting)
訓練データに対しては非常に高精度だが、
テストデータに対してほとんど対応できていない
過学習
ハイパーパラメータ
• 各層のニューロンの数
• バッチサイズ(繰り返し回数)
• 学習係数
• 荷重減衰
過学習を抑制するためにはハイパーパラメータの調整が必要
ハイパーパラメータ
検証とは
入力 モデル 出力
未使用の
入力
出力
作成したモデルのハイパーパラメータが
妥当かどうかを確認
損失関数
2乗和誤差
𝐸 =
1
2
𝑘
𝑦 𝑘 − 𝑡 𝑘
2
クロスエントロピー誤差
𝐸 = −
𝑘
𝑡 𝑘 log 𝑦 𝑘
分析プロセスの3要素
訓練
Training
テスト
Testing
検証
Validation
テストとは
入力
学習済み
モデル
出力
未知の
入力
出力
作成したモデルを利用し、
未知の入力でも期待通りの精度となることを確認
検証と何が違うのか
検証
テスト
About Train, Validation and Test Sets in Machine Learning
検証用データセット
モデルのハイパーパラメータを調整する際に使われる。検証用データセットがモデルに組み込まれる
と、より偏った評価になる可能性がある。
テスト用データセット
最終的なモデルに対して偏りなく評価するために使われる。
使うデータは 8:1:1 くらい
訓練
検証
テスト
パラメータの最適化
重み・バイアスの最適化
重みとバイアスを最適化したい(前提)
ミニバッチの損失関数を最小化する
SGDの勾配を計算する
重みとバイアスを更新する
ハイパーパラメータの最適化
ハイパーパラメータの範囲を予め設定しておく
検証データで精度を評価する
設定した範囲からランダムにサンプリングする
過学習を抑制しつつ、再学習する
Demo
Neural Network Consoleを使ってみる
Appendix
参考文献
ゼロから作るDeep Learning
Pythonで学ぶディープラーニングの理論と実装
O’Reilly Japan
2016年9月
斎藤 康毅
参考文献
• ディープラーニング(Deep Learning)とは?【入門編】 | LeapMind BLOG
• Choosing the right estimator — scikit-learn 0.19.1 documentation
• Rでisomap(多様体学習のはなし)
• AIとは?AI(人工知能)とDeep Learning(深層学習)を簡単に説明
• 【Deep Learning with Python】機械学習の基礎 - Going Faraway
• なぜ教師あり学習でバリデーションセットとテストセットを分ける必要があるのか? - Qiita
• About Train, Validation and Test Sets in Machine Learning
• [ディープラーニング] 活性化関数 – Tech Memo
• 文系にもわかるニューラルネットワークコンソール入門:「affine」って何? – Shelitas
• 強化学習入門 ~これから強化学習を学びたい人のための基礎知識~ - Platinum Data Blog by BrainPad
• AIを知るための4つの類型 「特化型」と「汎用型」、「強い」と「弱い」 | MUFG Innovation Hub
• 心や意識の謎、脳科学はここまで近づいた|出世ナビ|NIKKEI STYLE
• 損失関数について、ざっくりと考える - Qiita
• 再帰型ニューラルネットワーク: RNN入門 - Qiita
• 活性化関数のまとめ(ステップ、シグモイド、ReLU、ソフトマックス、恒等関数) - Qiita
• ディープラーニング(深層学習)を理解してみる(活性化/損失関数) - デジタル・デザイン・ラボラトリーな日々
• NumPyでニューラルネットワークを実装してみる 実装編 – DeepAge
• Pythonでフレームワークを使わずにニューラルネットワークを実装 - かざん技術ブログ
• Neural Network Console
Thank you!!

More Related Content

What's hot

人工知能は怖い?
人工知能は怖い?人工知能は怖い?
人工知能は怖い?弘実 佐野
 
全脳アーキテクチャ実現への長き道のりをいかに支えるのか
全脳アーキテクチャ実現への長き道のりをいかに支えるのか全脳アーキテクチャ実現への長き道のりをいかに支えるのか
全脳アーキテクチャ実現への長き道のりをいかに支えるのかドワンゴ 人工知能研究所
 
【ITソリューション塾・第29期】AI
【ITソリューション塾・第29期】AI【ITソリューション塾・第29期】AI
【ITソリューション塾・第29期】AIMasanori Saito
 
人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演
人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演
人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演Hiroshi Nakagawa
 
汎用人工知能について(2015-12)
汎用人工知能について(2015-12)汎用人工知能について(2015-12)
汎用人工知能について(2015-12)Naoya Arakawa
 
汎用人工知能の研究動向
汎用人工知能の研究動向汎用人工知能の研究動向
汎用人工知能の研究動向Naoya Arakawa
 
黒川塾七八(78)講演資料
黒川塾七八(78)講演資料黒川塾七八(78)講演資料
黒川塾七八(78)講演資料Youichiro Miyake
 
ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」
ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」
ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」Youichiro Miyake
 
「AI研究の現在とSFの想像力」講演資料(上)
「AI研究の現在とSFの想像力」講演資料(上)「AI研究の現在とSFの想像力」講演資料(上)
「AI研究の現在とSFの想像力」講演資料(上)Youichiro Miyake
 
自然な知覚を支える脳情報表現の定量理解
自然な知覚を支える脳情報表現の定量理解自然な知覚を支える脳情報表現の定量理解
自然な知覚を支える脳情報表現の定量理解shinjinishimoto
 
AIとDeep Learningについての私的メモ
AIとDeep Learningについての私的メモAIとDeep Learningについての私的メモ
AIとDeep Learningについての私的メモIWASAKI NOBUSUKE
 
ヒト並みの人工知能と現象学
ヒト並みの人工知能と現象学ヒト並みの人工知能と現象学
ヒト並みの人工知能と現象学Naoya Arakawa
 
明治大学「ゲーム研究の新時代に向けて」講演資料(下)
明治大学「ゲーム研究の新時代に向けて」講演資料(下)明治大学「ゲーム研究の新時代に向けて」講演資料(下)
明治大学「ゲーム研究の新時代に向けて」講演資料(下)Youichiro Miyake
 
明治大学「ゲーム研究の新時代に向けて」講演資料(上)
明治大学「ゲーム研究の新時代に向けて」講演資料(上)明治大学「ゲーム研究の新時代に向けて」講演資料(上)
明治大学「ゲーム研究の新時代に向けて」講演資料(上)Youichiro Miyake
 

What's hot (20)

人工知能は怖い?
人工知能は怖い?人工知能は怖い?
人工知能は怖い?
 
全脳アーキテクチャ実現への長き道のりをいかに支えるのか
全脳アーキテクチャ実現への長き道のりをいかに支えるのか全脳アーキテクチャ実現への長き道のりをいかに支えるのか
全脳アーキテクチャ実現への長き道のりをいかに支えるのか
 
第3回WBAハッカソン第2回説明会資料(配布用)
第3回WBAハッカソン第2回説明会資料(配布用)第3回WBAハッカソン第2回説明会資料(配布用)
第3回WBAハッカソン第2回説明会資料(配布用)
 
【ITソリューション塾・第29期】AI
【ITソリューション塾・第29期】AI【ITソリューション塾・第29期】AI
【ITソリューション塾・第29期】AI
 
人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演
人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演
人工知能学会合同研究会2017-汎用人工知能研究会(SIG-AGI)招待講演
 
汎用人工知能について(2015-12)
汎用人工知能について(2015-12)汎用人工知能について(2015-12)
汎用人工知能について(2015-12)
 
汎用人工知能の研究動向
汎用人工知能の研究動向汎用人工知能の研究動向
汎用人工知能の研究動向
 
全脳アーキテクチャ勉強会 第1回(山川)
全脳アーキテクチャ勉強会 第1回(山川)全脳アーキテクチャ勉強会 第1回(山川)
全脳アーキテクチャ勉強会 第1回(山川)
 
黒川塾七八(78)講演資料
黒川塾七八(78)講演資料黒川塾七八(78)講演資料
黒川塾七八(78)講演資料
 
人工知能の(過去・現在・)未来と倫理
人工知能の(過去・現在・)未来と倫理人工知能の(過去・現在・)未来と倫理
人工知能の(過去・現在・)未来と倫理
 
BigData Conference 2015 Autmun
BigData Conference 2015 AutmunBigData Conference 2015 Autmun
BigData Conference 2015 Autmun
 
ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」
ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」
ゲンロンカフェ講演資料 「変わる社会と変わる人工知能」
 
「AI研究の現在とSFの想像力」講演資料(上)
「AI研究の現在とSFの想像力」講演資料(上)「AI研究の現在とSFの想像力」講演資料(上)
「AI研究の現在とSFの想像力」講演資料(上)
 
知能とは何か-AIを巡る20の質問, 岡夏樹
知能とは何か-AIを巡る20の質問, 岡夏樹知能とは何か-AIを巡る20の質問, 岡夏樹
知能とは何か-AIを巡る20の質問, 岡夏樹
 
自然な知覚を支える脳情報表現の定量理解
自然な知覚を支える脳情報表現の定量理解自然な知覚を支える脳情報表現の定量理解
自然な知覚を支える脳情報表現の定量理解
 
AIとDeep Learningについての私的メモ
AIとDeep Learningについての私的メモAIとDeep Learningについての私的メモ
AIとDeep Learningについての私的メモ
 
ヒト並みの人工知能と現象学
ヒト並みの人工知能と現象学ヒト並みの人工知能と現象学
ヒト並みの人工知能と現象学
 
明治大学「ゲーム研究の新時代に向けて」講演資料(下)
明治大学「ゲーム研究の新時代に向けて」講演資料(下)明治大学「ゲーム研究の新時代に向けて」講演資料(下)
明治大学「ゲーム研究の新時代に向けて」講演資料(下)
 
明治大学「ゲーム研究の新時代に向けて」講演資料(上)
明治大学「ゲーム研究の新時代に向けて」講演資料(上)明治大学「ゲーム研究の新時代に向けて」講演資料(上)
明治大学「ゲーム研究の新時代に向けて」講演資料(上)
 
人工知能と身体
人工知能と身体人工知能と身体
人工知能と身体
 

Deep Learning入門

Editor's Notes

  1. 突然ですが、こんな妄想を抱いていないでしょうか? または、周りにこんなことを言っている先輩はいないでしょうか? 例えば「AIは単なるプログラムではない」
  2. 「AIは勝手に賢くなる」
  3. あるいは「いずれ人間 vs AIの戦争が起こる」
  4. そんなことはありません。シンギュラリティなんか起こりません。 AIも所詮はただのプログラムであり、勝手に賢くなったりすることもありません。 今日はそれを皆さんに知ってもらいます。
  5. 今日はまず「そもそもAIとは何なのか」ということから説明します。 その後で、じゃあDeep Learningとは、あるいはそこで具体的にやっていることは何なのかについてをデモを交えご紹介します。
  6. これがAIと機械学習、Deep Learningの関係です。
  7. 弱いAI:人間のような自意識を備えていないAI 強いAI:SF映画に出てくるような、あたかも人間のように振る舞うAI 特化型AI:一つの機能に専門化して稼働するAI 汎用型AI:プログラムされた特定機能以外も自身の能力を応用して対応できるAI
  8. 教師あり学習:学習する時に使うデータに正解ラベルがついている 教師なし学習:学習する時に使うデータに正解ラベルがついていない 回帰:数値予測などの分析 分類:画像認識などの分析 クラスタリング:顧客の購買情報に基づくグループ分けなどの分析 強化学習:株の売買や囲碁・将棋などの手番最大化分析
  9. DNN:一般的に言うニューラルネットワーク CNN:画像などデータの次元と位置関係に重要な意味がある際に使われる RNN:自然言語処理など前後の入力データに重要な意味がある際に使われる なおCNNはDeep Learningの理解において非常に重要ですが、今回はスコープ外とします。
  10. 色々書きましたが、いずれにしても言えるのが「AIは今のところ認知を無理やり真似しようとしているに過ぎない」ということです。
  11. 物事を認知するとはどういうことでしょうか。 例えばここに1枚の画像があります。言うまでもなく、ネコの画像です。 人はこれを見たとき「四足歩行でヒゲがあってもふもふしている。だからこれはネコだ」と分かります。 それはこれまで生きてきたなかでネコとはそういうものだと「学習」しているからです。 AIも大筋は同じで、ネコの画像を学習させることではじめてネコをネコと認識できるのです。 ただ一つ言うなら、人は幼少期に2、3度「これはネコだよ」と教えられればどんなネコでも認識できますが、 AIはそこまで頭がよくないので何千枚ものネコの画像を覚えさせる必要があるし、それでもイラストだと認識できなかったりします。
  12. では次に、巷で持て囃されているDeep Learningについての説明に入ります。
  13. 結論から申し上げますと、Deep Learningは脳神経を真似しようとしたものである、ということです。 現代医学では脳の構造は100%解析されていないので、つまりそれのパクりであるDeep Learningもよく分からない(BlackBoxな)ものになります。
  14. 動物の脳はニューロンと呼ばれる細胞でできています。 樹状突起が他のニューロンからの信号を受け付け、それを細胞体で処理して軸索を通って別のニューロンに渡す、というのを繰り返すことで神経系は成り立っています。 今のところ、細胞体で具体的に何をやっているのかは謎です。 Deep Learningを活用して近年急速に脳の構造に関する解析が進展したという話も聞きますが、私は医学の専門家ではないのでその話は置いておきます。 脳の構造の最小単位であるニューロンをモデル化したものが右図のパーセプトロンというものです。 パーセプトロンは複数の入力とそれぞれに対する重みをパラメータとし、一つの出力を行う関数です。
  15. ではパーセプトロンでは何をやっているのでしょうか。 細胞体の機能が解明されていないので、ここに経験則的な知見が入ります。 これはMNISTという手書きアラビア数字のライブラリから持ってきたものです。 多くの手書き文字は難なく読めますが、例えば赤で囲ったものを考えてみます。 人の認識を言葉にしてみると「まっすぐだから1」とか「上に棒が入っているから7」とか、はたまた「上で折り返しているように見えるから9の可能性がある」とか、無意識に色々考えると思います。
  16. なので、その「色々考える」を関数として表現します。これを活性化関数といいます。 シンプルなニューラルネットワークでは活性化関数には主にシグモイド関数が使われます。
  17. これがシグモイド関数です。 ニューラルネットワークでは多用される最もシンプルな活性化関数です。
  18. これはハイパボリックタンジェントです。 たぶんタンジェントの進化系みたいなものです。
  19. これはステップ関数です。 Deep Learningが広く認知される以前はパーセプトロンとして使われていました。
  20. これがReLU関数です。 入力が0未満では0を返し、0以上ではそのままの値を返すというものです。
  21. ニューラルネットワークの全体像をまとめるとこのようになります。 活性化関数にはシグモイド関数以外にももっと複雑なものもありますが、紹介は省略します。 ネットワークの一番最後の層は活性化関数ではなく恒等関数もしくはソフトマックス関数というものを使います。
  22. これが恒等関数です。入ってきた値をそのまま出力に流します。 主に回帰問題で使われます。
  23. これがソフトマックス関数です。入力を全体から見た確率として出力します。 主に分類問題で使われます。
  24. 口頭でごちゃごちゃ言ってても仕方ないのでここまでやってきたことを実装してみます。
  25. 次にDeep Learningにおける分析プロセスを説明します。
  26. 一般に予測モデルを作成するためのプロセスを学習(Learn)と言います。 学習では訓練、検証、テストと3つのステップを踏むのが一般的となっています。
  27. 訓練
  28. AIは極論的には何らかの入力を受けて何らかの出力をする、その間に入るいわば関数のようなもので、学習の最大の目的はこれを構築することにあります。あるいは、その作業を半自動化するということが現代における機械学習の最大の功績であります。
  29. 自動といっても最初に述べたように「勝手に作られる」ものではありません。賢くなる、というのは実際そのとおりかもしれませんが。 典型的な予測モデルの例をここに示します。xが入力データ、wがAIがどれだけそのデータを重視するかという重み、bは定数で、それらを足し合わせ掛け合わせて最終的な出力yを得ます。 これは統計学の重回帰分析にも似ています。
  30. 入力と出力は調整するというものではないので、結局訓練で何をやるかというと、残りのwとbの最適化になるわけです。 機械学習のほとんどの作業は、このパラメータ決めに費やします。
  31. パラメータの最適化には確率的勾配降下法というものが使われます。 ざっくり言うとただの偏微分ということだけ覚えておいてください。
  32. 確率的勾配降下法の具体例です。このケースでは明らかにx1, x2ともに0が最小値を取ることが分かりますが、確率的勾配降下法ではそれを適当なパラメータで初期化してより小さい値を取る方向に更新することで探していきます。
  33. 検証
  34. 検証の説明を行う前に過学習について説明します。 青いグラフが訓練(問題集)の正解率でオレンジのグラフがテスト(試験本番)の正解率を示します。訓練に対してはほぼ100%の正解率が出ているのにテストでは6~7割くらいしか当たっていないことが読み取れると思います。この状態を過学習といい、機械学習で一番よくある失敗パターンになります。
  35. 「訓練」の説明で「学習はパラメータの最適化だ」と言いましたが多層ニューラルネットワークでは最終的な調整対象にはならない隠されたパラメータが幾つかあり、これを修正することで過学習を抑制することができます。これらをハイパーパラメータといいます。
  36. 検証は過学習の起こらない最適なハイパーパラメータを探すフェーズになります。 ただし、訓練で使っていない別のデータを使わなければなりません。
  37. 解答と正解の照合を行うために評価では損失関数を使います。 損失関数には主に2乗和誤差とクロスエントロピー誤差があります。
  38. テスト
  39. 訓練と検証でモデルを確定させ、最後にテストを行い、モデルの純粋な性能、実力を計ります。
  40. 検証とテストがよく似ているのでここに違いを示しておきます。 検証はハイパーパラメータの調整、テストはあくまでモデル確定後の確認作業という位置付けになります。
  41. 訓練、検証、テストでは異なるデータを用意する必要があります。 比率としては大体訓練8割、検証とテスト1割ずつという感じです。
  42. パラメータ、ハイパーパラメータを最適化する手順をまとめます。
  43. パラメータの最適化の勘所はSGDを使って少しずつ損失関数の小さい方向に重みとバイアスを更新していく、ということです。
  44. 対してハイパーパラメータには勾配という概念はなく、設定した範囲内での総当たり戦になります。
  45. 最後にNeural Network ConsoleというGUIツールを使ってMNISTデータセットの画像認識をデモしてみます。 このデモを通じて「いかにニューラルネットワークそのものを理解することが無意味か」を実感してもらえれば幸いです。
  46. Sonyが無償で提供しているDeep Learning用のツールです。 クラウドとWindows 10で使えます。