Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kerasを用いた深層学習基礎

Avatar for gaku1472 gaku1472
February 28, 2019

 Kerasを用いた深層学習基礎

・機械学習とディープラーニングの理解
・Python + Keras + collaboratoryの学習実践
  ・全結合ネットワーク
  ・畳み込みニューラルネットワーク
  ・リカレントニューラルネットワーク
  ・Functional API
・アルゴリズムの解説

Avatar for gaku1472

gaku1472

February 28, 2019

Other Decks in Programming

Transcript

  1. 機械学習のフロー 特徴データ 学習用 データセット 予測値 真の値 誤差 重み 重みの更新 モデル

    評価用 データセット 予測値 真の値 評価 STEP1:モデル作成 STEP2:モデル評価
  2. 家の価格 = 坪数 + 間取り + 駅までの距離 + 都道府県 導きたいもの

    (目的変数) 特徴データ (説明変数) データセット(目的値と特徴データ) ※ 特徴データが文字列でも画像でも、数字に変換しなければならない。
  3. 家の価格 = A 1 × 坪数 (予測) + A 2

    × 間取り + A 3 × 駅までの距離 + A 4 × 都道府県 (目的変数) (説明変数) (重み) 重要!重みの計算 機械学習では重みの計算しか行わない!
  4. 重みってどう計算する? Q. 100 = 10 * W1 + 20 のW1の重みは?

    1. W1 = 2の場合 :40 - 100 = -60 2. W1 = 6の場合 :80 - 100 = -20 3. W1 = 10の場合:120 - 100 = 20 4. W1 = 9の場合 :110 - 100 = 10 5. W1 = 8の場合 :100 - 100 = 0 A. 繰り返しの結果、答えは8! (予測) (実数) (残差)
  5. 予測価格と実価格の差を10%におさめて! 坪数 間取り 駅までの距離 都道府県 実際の価格 (万円) 予測価格 (万円) 残差

    35 200 400 東京 2000 2000 0 28 150 300 岩手 1500 1520 20 40 300 600 大阪 3000 2600 -400 19 200 400 兵庫 2000 2000 0 2500 100 200 群馬 1000 1000 0 1000 40 80 名古屋 4000 4100 100 - - - - 13500 13220 -280 モデルの品質の担保
  6. 重要!損失関数(残差) = 誤差 例) ① 平均絶対誤差 (MAE): →残差の絶対値の平均値(0であるほど良い) ② 平均二乗誤差

    (MSE): →残差の2乗の平均値(0であるほど良い) 損失関数で残差を誤差に変換。 ビジネス要件に適用&誤差が下がるように重み調整
  7. 超重要!層と関数で新しい特徴を作る 結婚できるか? (0 or 1) 入力層 出力層 隠れ層 (入力を変換、新しい特徴に) X1

    X2 X3 Z B 年齢 年収 顔面 バイアス W1 W2 W3 F P X =( X1, X2, X3 ) W =( W1, W2, W3 ) Z = X・W+b F = 0 or 1 0 = if( Z < 0) 1 = if( Z ≥ 0) (層) (関数) 重みの 追加 値の変換
  8. 参考:活性化関数とオプティマイザ 問題の種類 最後の層の活性化関数 損失関数 任意の値に対する回帰 なし mse 0~1の値に対する回帰 sigmoid binary_crossentropy

    2項分類 sigmoid binary_crossentropy 多クラス単一ラベル分類 softmax categorycal_crossentropy 多クラス多ラベル分類 sigmoid categorycal_crossentropy
  9. 画像→数値に変換が必要 [[0.1, 1.0, 3.2, 4.0, 3.2, 1.1], [2.1, 0.2, 0.1,

    3.1, 2.0, 1.2], [0.3, 0.4, 3.7, 4.1, 5.1, 2.1], [1.1, 0.3, 6.1, 3.5, 2.4, 6.1], [2.1, 2.5, 5.3, 3.1, 3.8, 8.1], [4.3, 5.4, 6.1, 7.7, 4.1, 2.1]]
  10. 全結合ネットワークの限界 Z F 全結合 関数 (sigmoid) (softmax) 正解 t 比較

    画像全体に対する重みを計算するので計算コストが高い 入力層 出力層 隠れ層 隠れ層 W2 W1 W3
  11. 畳み込みニューラルネットワークの解説 1 1 1 1 0 1 1 1 1

    0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 2 3 1 1 入力(5 x 5) フィルタ(2 x 2) 5 5 5 3 5 5 5 3 5 5 5 3 5 5 5 3 (0*2+1*1+3*1+1*1=5) Conv2D(1, (2, 2)) 特徴マップ MaxPooling(2, 2) 5 5 5 5 特徴マップ ① 2*2の範囲を抽出し 適当な重みを追加 ② 合計した値で特徴 マップを作成 ③ 最大値のみ抽出
  12. リカレントニューラルネットワークの解説 Embedding層: 1. 単語をインデックスのリストに変換 「I am Shinya Murakawa in Japanease.」

    => [1 2 3 4 5 6 7] 2. ダミー変数に変換 → 3. 次元の圧縮 1 2 3 4 5 6 7 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 [[0.1, 0.3, 0.2, 1, 0.5, 0.6, 0.2]]
  13. SimpleRNNをLSTM(長短期記憶)で代替 入力(t - 1) 出力(t-1) 入力(t) 出力(t) 出力 = 活性化関数(

    重み1 x 入力(t) 重み2 x 入力(t-1) 重み3 x 忘却層 + バイアス ) 忘却ゲート 出力ゲート 入力ゲート 入力(t+1) 出力(t+1) 忘却ゲート 出力ゲート 入力ゲート
  14. 入力(t - 1) 出力(t-1) 入力(t) 出力(t) 出力 = 活性化関数( 重み1

    x 入力(t) 重み2 x 入力(t-1) + バイアス ) 更新ゲート 出力ゲート 入力(t+1) 出力(t+1) 更新ゲート 出力ゲート SimpleRNNをGRUで代替
  15. あ = Analytics(分析) い = If(条件分岐のコード) う = Unsatisfied(不満足) え

    = Error(ヒューマンエラー) お = Overused(使いすぎ) 機械学習がなくす「あいうえお」 ※ 個人的な見解です。