Slide 1

Slide 1 text

新卒AI研修 01 Introduction

Slide 2

Slide 2 text

22 ©MIXI 講義の⽬的 機械学習(深層学習‧勾配ブースティング)で ● 何ができるか ● 何が必要か ● どうサービスと繋げるか を学びます

Slide 3

Slide 3 text

33 ©MIXI 講義の⽬的 と⾔っても、1⽇で時間が⾜りるわけがありません あれに使えるかもしれない!⾃分から触ってみよう! と壁を取り払えることが⼀番の⽬的です

Slide 4

Slide 4 text

44 ©MIXI 講義の概要 ● 機械学習とは何か (01_introduction) ● データと学習⽅法(02_data_and_training) ● 機械学習⼿法について(03_ML_algorithm) ● デプロイ(04_deployment) ● サービスについて考える(05_service_in_mixi)

Slide 5

Slide 5 text

55 ©MIXI ハンズオンの概要 ● 画像分類(01_image_classification) ● プルーニング(01ex_pruning) ● 転移学習(02_transfer_learning) ● パラメーターチューニング(02ex_parameter_tuning) ● LLMとRAGを⽤いた⽂章検索(03_document_retrieval_by_LLM_and_RAG) ● デプロイとサービング(04_deploy_and_serving) 

Slide 6

Slide 6 text

66 ©MIXI 機械学習とは データから知⾒を得て、それを次の決定に利⽤すること ● 知⾒とはブラックボックスな関数 ○ 何かしらのルールがある ● データとは過去の出来事 ○ 数値, 画像, ⾳声, テキスト, etc. ● 決定:予測 ○ 知⾒と今の状態がわかれば未来を予測できる

Slide 7

Slide 7 text

77 ©MIXI 機械学習とは何か ルールがあるということは、関数で表せるということ ● 今⽇の全ての情報があれば明⽇の天気はわかるはず.. ● 未来の株価は過去の動きで予測できるはず... ● ⼈間は外部⼊⼒を受けてニューロンが... 世界の全ては(規模を無視すれば)関数で表現できるかも!

Slide 8

Slide 8 text

88 ©MIXI プログラミングとの違いは? ルールを⾃分で決めて、表現することがプログラミング ● 盤⾯のスコアリングをルールベースで決定し、次のアクションの結果を評価 して駒を動かす 過去のデータの中からルールを得るのが機械学習 ● ⼤量の棋譜からパターンを⾒つけて、次の⼿を決定する 盤面のスコアリングから、 次の行動で一番点数の高い 角を5一にしよう 過去の棋譜と 差し手のパターンから 角を5一にしよう プログラミング 機械学習

Slide 9

Slide 9 text

99 ©MIXI 統計との違いは? 統計学はデータから可視化できる表現を得る ● ある意思決定の理由を説明するのが⽬的 機械学習は表現を得て、予測精度をあげることが⽬的 ● 検証で良い数字がでるなら、なにかしらの表現を得たことになる データから知⾒を得るという部分は同じだし、基礎理論も同じ ● 良いデータサイエンティストは良いMLエンジニア

Slide 10

Slide 10 text

10 10 ©MIXI どんな問題を解決できるか? 様々な分野で様々な問題を解決することができる ● 需要・コスト予測 ● カスタマー対応 ● ゲームデッキのレコメンド ● 書類のチェック ● マーケティングプラン ● ゲームAI ● キャラクター生成 ● 翻訳 ● 競馬/競輪の予測 ● 音声の変換 ● メトリクスの異常検知 ● コードレビューの補助 ● モーションキャプチャ ● 不審な決済ログの洗い出し ● …

Slide 11

Slide 11 text

11 11 ©MIXI どんな問題を解決できるか? ⾃分のサービスに適⽤できないか? ● どんな解決できそうな問題があるか? ● 必要なデータはあるか? これを考えられるようになってもらうのが講義の主⽬的です

Slide 12

Slide 12 text

12 12 ©MIXI 機械学習の分類 AI 機械学習 教師あり学習 教師なし学習 強化学習 Deep Learning 勾配 ブース ティング

Slide 13

Slide 13 text

13 13 ©MIXI ● 教師データと出⼒の損失を⽤いて学習 教師あり学習 モデル 入力 出力 損失(loss) 教 師 デ タ ー

Slide 14

Slide 14 text

14 14 ©MIXI 教師なし学習 ● 教師データが存在しない学習(データ内のパターンを⾒つける学習) クラスタリング オートエンコーダ Encoder Decoder 入力 出力 特徴量 次元圧縮 クラスタ1 クラスタ2 クラスタ3

Slide 15

Slide 15 text

15 15 ©MIXI 強化学習 ● 環境とやりとりして⾏動の報酬をもらうことでエージェントが学習 環境 エージェント 行動 観測 意思決定 報酬 学習 変化

Slide 16

Slide 16 text

16 16 ©MIXI 強化学習 ● 環境とやりとりして⾏動の報酬をもらうことでエージェントが学習 START +10 -10 環境 エージェント START

Slide 17

Slide 17 text

17 17 ©MIXI 分類(Classification)と回帰(Regression) 分類 ● 出⼒が離散値 True or False ⽝、猫、⼈... ● あらかじめ与えられた カテゴリー/クラス/分類 を予測する際に使⽤ ● 例 モンストキャラの画像と種類から 新たなキャラ画像が与えられた時に そのキャラがどの種類かを予測 回帰 ● 出⼒が連続値 ⾦額や⼈数、温度… ● 数字の⼤⼩に意味が存在する 値を予測する際に使⽤ ● 例 過去のモンストの売上から 明⽇の売上を予測

Slide 18

Slide 18 text

18 18 ©MIXI 分類(Classification)と回帰(Regression) QUIZ 1. ユーザの収⼊や家族構成、その他パラメータから預⾦額を予測する 2. ユーザの収⼊や家族構成、その他パラメータからある取引が不正かどうかを 予測する 3. 画像に写っている物の種類を予測する 4. 画像に写っている物の位置を予測する

Slide 19

Slide 19 text

19 19 ©MIXI 機械学習の流れ 用意したデータ モデル 入力 出力 損失(loss) 教師データ(ラベル) 入力(特徴量) 教 師 デ タ ー

Slide 20

Slide 20 text

20 20 ©MIXI 機械学習の流れ 用意したデータ 入力 出力 教師データ(ラベル) 入力(特徴量) 教 師 デ タ ー モデル Parameters Hyper Parameters 損失(loss)から Parametersを更新

Slide 21

Slide 21 text

21 21 ©MIXI Parameters: Weights & Biases パラメーターは学習で変化する値    WeightとBiasがある   y = b + x * w この値を調整すると、出力の値が変わる

Slide 22

Slide 22 text

22 22 ©MIXI 機械学習の流れ 用意したデータ 入力 出力 教師データ(ラベル) 入力(特徴量) 教 師 デ タ ー モデル Parameters Hyper Parameters 損失関数 Loss 最適化関数 (Optimizer) Parameters 更新

Slide 23

Slide 23 text

23 23 ©MIXI 損失関数(Loss Function) 回帰問題の代表的な損失関数 ➢ RMSE

Slide 24

Slide 24 text

24 24 ©MIXI 多クラス分類問題の代表的な損失関数 損失関数(Loss Function) ➢ Categorical Cross Entropy Label Name オラゴン ブルーリドラ レッドリドラ グリーンリドラ Output 3.57 0.27 1.80 - 0.83 Softmax 0.8200 0.0302 0.1397 0.0101 Label 1 0 0 0 Cross Entropy 0.086 0 0 0

Slide 25

Slide 25 text

25 25 ©MIXI 最適化関数: 最急降下法(Gradient Descent) 最適化関数 ➢ Lossが最⼩になるようなWeightを決定 例: 最急降下法(Gradient Descent) 更新式 学習率 (learning rate) Loss

Slide 26

Slide 26 text

26 26 ©MIXI 最適化関数⼀覧 ● Gradient Descent (GD) ● Stochastic Gradient Descent (SGD) ● Nesterov Accelerated Descent (NAG) ● Momentum ● RMSProp ● Adagrad ● Adam ● …

Slide 27

Slide 27 text

27 27 ©MIXI 機械学習の流れ 用意したデータ 入力 出力 教師データ(ラベル) 入力(特徴量) 教 師 デ タ ー モデル Parameters Hyper Parameters 損失関数 Loss 最適化関数 (Optimizer) Parameters 更新

Slide 28

Slide 28 text

28 28 ©MIXI Hyper Parameters ハイパーパラメータ ● 学習前に予め決めておく必要がある値 ● 学習によって変化しない ● 最適値はタスクによって異なる 例 ● learning rate, バッチサイズ ● パラメータの数 ● 使⽤するアルゴリズムの係数 ● …

Slide 29

Slide 29 text

29 29 ©MIXI Hyper Parameters: バッチサイズ ⼀度でトレーニングでどれだけのデータをまとめて学習するか ● 理想だけ⾔えば⼤きいほうがより安定する ➢ ⼤きくしすぎると精度悪化の可能性 ➢ 計算量やメモリの使⽤量が⼤きくなる ● バッチサイズと学習率には関係がある ➢ 学習率を固定してバッチサイズを5倍にするということは、 バッチサイズを固定して学習率を1/5にするということに近い

Slide 30

Slide 30 text

30 30 ©MIXI 機械学習の流れ 用意したデータ 入力 出力 教師データ(ラベル) 教 師 デ タ ー モデル Parameters Hyper Parameters 損失関数 Loss 最適化関数 (Optimizer) Parameters 更新

Slide 31

Slide 31 text

新卒AI研修 02 data & training

Slide 32

Slide 32 text

32 32 ©MIXI 未学習(underfitting)/過学習(overfitting) ● どのモデルが正しくデータの傾向を学習できているか? (a) (b) (c)

Slide 33

Slide 33 text

33 33 ©MIXI 過学習: overfitting 過学習が起こる条件 ● データが少なすぎる ● データに対してモデルが複雑すぎる 過学習を対策するためには... ● データを訓練データと検証データ に分けることで、overfittingに 気づける状態にしておく データ 訓練データ 検証データ テストデータ

Slide 34

Slide 34 text

34 34 ©MIXI 訓練データ/検証データ/テストデータ ● 訓練データで学習させていくと、やがてモデルは Lossを下げるために過学習していく ➢ 次第に未知のデータへの予測精度が悪化 ● 検証データを切り分け、そのLossを検証することで、 モデルが訓練データに対して過学習することを防ぐ ● 検証データを使って訓練データの学習を制御 ➢ 検証データの情報が訓練データにリークするので 最終的な精度の検証はテストデータで⾏う 検証データ 学習データ Epochs Loss

Slide 35

Slide 35 text

35 35 ©MIXI 訓練データ/検証データ/テストデータ 実際に学習に使用するデータ このデータにモデルが適合しすぎると過学習 学習のステップごとに検証に使用するデータ このデータと訓練データの結果に差があると 過学習と判断できる 学習後に結果を検証するデータ ハイパーパラメータも含めて調整時には使っ てはいけないデータ データ 訓練データ 検証データ テストデータ 訓練データ 検証データ テストデータ

Slide 36

Slide 36 text

36 36 ©MIXI 過学習とデータ量 ● 訓練データは表現したいものの全ての空間を表現している必要がある ex) ⼈の顔を認識させたいのに、イケメンばかり学習データに使⽤したら? ● 問題によって異なるが、データの数はあればあるだけ良い ➢ ただしありすぎると学習は遅くなる

Slide 37

Slide 37 text

37 37 ©MIXI 良い特徴量(⼊⼒データ)とは 良い特徴量の条件は 1. ⽬的に関係している値である ● 競⾺の購⼊⾺券を予測する問題で、⾺主の年齢は関係あるか? ● いらないデータはノイズになる 2. 推論のタイミングで利⽤可能である ● ⼦供の誕⽣時の体重を予測する問題で、妊娠⽇数は使えるか? 3. 意味のある数値(ベクトル)に変換できる ● ⽂章はベクトルに変換することも可能 4. ⼈間の洞察が含まれている ● 良いデータサイエンティストが良いMLエンジニアである理由

Slide 38

Slide 38 text

38 38 ©MIXI 特徴量エンジニアリング ● 特徴量を前もって学習しやすい形に加⼯しておくこと   ex) 収⼊を予測するモデル ● 住んでいる家の緯度、経度の情報は関係ある値 ● ただ、同じ経度でも東北の緯度と東京の緯度では意味は異なる ● 本当に意味があるのは数値ではなく、どの地域なのかの情報 ● 緯度と経度で分離してバケット化

Slide 39

Slide 39 text

39 39 ©MIXI 過学習に対する⼿法 ● Early Stopping ● Data Augmentation ● 正則化 ● Dropout ● バッチ正規化 ● …

Slide 40

Slide 40 text

40 40 ©MIXI 過学習に対する⼿法 ● Early Stopping ● Data Augmentation ● 正則化 ● Dropout ● バッチ正規化 ● …

Slide 41

Slide 41 text

41 41 ©MIXI 過学習を防ぐ⼿法 Early Stopping ● 監視する精度(Loss, Accuracy等)が⼀定期間上がらない場合、 学習を停⽌させる ● 主に検証データのLossを監視指標とすることが多い 記法例 (Keras) 検証データでの Lossが5回連続 改善しない場合 学習終了 検証データ 学習データ Epochs Loss Early Stopping

Slide 42

Slide 42 text

42 42 ©MIXI 過学習を防ぐ⼿法 Data Augmentation ● 既存のデータを加⼯して新しいデータを作ることで、 データ量を⽔増しする ➢ データのパターンを増やすことにより過学習を抑制 例: 画像のAugmentation オリジナル 回転 位置 縮尺 Augmentationあれこれ: https://github.com/AgaMiko/data-augmentation-review … 42

Slide 43

Slide 43 text

43 43 ©MIXI 過学習を防ぐ⼿法 正則化 ● 過学習が発⽣しているモデルは複雑 ● 複雑になるのは⽬的関数を最適化した結果 ● 複雑になりすぎないように⽬的関数にペナルティ(正則化項)を導⼊する 目的関数 = 損失関数 + λ 正則化項 正則化の効きをコントロール するパラメータ

Slide 44

Slide 44 text

44 44 ©MIXI L1 Normalization ● モデルのweightを菱形のライン上に収める ● 不必要なweightは0を取る事が多い(≒次元圧縮) L2 Normalization ● モデルのweightを円のライン上に収める ● 不必要なweightは0に近づく 正則化項: L1/L2 Normalization 損失が最小となる点

Slide 45

Slide 45 text

45 45 ©MIXI 過学習を防ぐ⼿法 Dropout ● ニューラルネットを⽤いた学習時に、⼀部のニューロンからの出⼒を0にする ➢ 特定のニューロンに対しての依存を抑制 ● アンサンブル学習のような効果が⾒込める ➢ エポック毎にDropoutするニューロンが変わることで 擬似的に複数モデルで協調した出⼒がされる形となり、過学習を抑制 … 1 epoch 2 epoch 3 epoch モデル Dropout 適用

Slide 46

Slide 46 text

46 46 ©MIXI モデル選定とデータ形式 ● 機械学習における深層学習(Deep Learning)系のモデルは、⾮構造化データに 対してより優れた精度を発揮することが多い ➢ ⾮構造化データの例: ⾳楽, 画像, 動画, テキスト, etc… ● ⼀⽅、構造化データに対しては、勾配ブースティング決定⽊(GBDT)系のモデル のほうがより優れた精度を発揮することが多い ➢ 構造化データの例: 表形式データ, RDB内のテーブルデータ, csvデータ, etc… https://www.datarobot.com/jp/blog/is-deep-learning-almighty/

Slide 47

Slide 47 text

47 47 ©MIXI 深層学習におけるモデル: ニューラルネットワーク(NN) Output Input ● まず線形なモデルを考える

Slide 48

Slide 48 text

48 48 ©MIXI ニューラルネットワーク(NN) Output Input Hidden 線形変換からは逃れられない… ● 層を増やしてみる

Slide 49

Slide 49 text

49 49 ©MIXI ニューラルネットワーク(NN) : Activation関数(⾮線形変換) Hidden2 Hidden1 Activation Input Output ● NNでは層の途中にActivation関数 (⾮線形変換)を挟む ● この関数により、線形分離が できない問題も解けるように ➢ より複雑な表現が可能 ● NNでは、Activationを図に 表記しないことが多いので注意

Slide 50

Slide 50 text

50 50 ©MIXI Activation関数

Slide 51

Slide 51 text

51 51 ©MIXI 試してみよう: Neural Network Playground ● 今までの講義の内容を思い出しつつ、NNで遊んでみよう ● Neural Network Playground ➢ https://playground.tensorflow.org

Slide 52

Slide 52 text

52 52 ©MIXI Neural Network Playground 1. 左右に2分割されている問題を解いてみよう ● ベーシックな線形問題なので、Hidden Layersなしの Featuresだけで解けることを確認しよう 2. 円で分割されている問題を解いてみよう ● HIDDEN LAYERSを増やしたりNeuronsの数を増やしたり ActivationやFeaturesを変えたりして解いてみよう ● うまく分類できたら、learning rateを10にして再学習させてみよう(学習できない) ● 逆にlearning rateを0.0001にして再学習させてみよう(学習が遅い) ● できるだけ単純なモデルで分類できる状態を探索してみよう

Slide 53

Slide 53 text

53 53 ©MIXI Neural Network Playground 3. 市松状の問題を解いてみよう ● HIDDEN LAYERSを増やしたりNeuronsの数を増やしたり ActivationやFeaturesを変えたりして解いてみよう ● できるだけ単純なモデルで分類できる状態を探索してみよう 4. 螺旋状の問題を解いてみよう ● HIDDEN LAYERSを増やしたりNeuronsの数を増やしたり ActivationやFeaturesを変えたりして解いてみよう ➢ 少し複雑なモデルにしてみよう ● モデルのRegularizationをL1, Regularization rateを0.001にしたときの 精度やNeuronのWeightを確認しよう ● モデルのRegularizationをL2, Regularization rateを0.003にしたときの 精度やNeuronのWeightを確認しよう

Slide 54

Slide 54 text

54 54 ©MIXI Neural Network Playground: 左右に2分割のデータを分類 ● ベーシックな線形問題なので、Featuresだけで解けることを確認しよう

Slide 55

Slide 55 text

55 55 ©MIXI Neural Network Playground: 円のデータを分類 ● HIDDEN LAYERSを増やしたりNeuronsの数を増やしたりActivationやFeaturesを 変えたりして解いてみよう

Slide 56

Slide 56 text

56 56 ©MIXI Neural Network Playground: 円のデータを分類 ● learning rateを10にして再学習させてみよう(学習できない)

Slide 57

Slide 57 text

57 57 ©MIXI Neural Network Playground: 円のデータを分類 ● learning rateを0.0001にして再学習させてみよう(学習が遅い)

Slide 58

Slide 58 text

58 58 ©MIXI Neural Network Playground: 円のデータを分類 ● できるだけ単純なモデルで分類できる状態を探索してみよう

Slide 59

Slide 59 text

59 59 ©MIXI Neural Network Playground: 市松状のデータを分類 ● HIDDEN LAYERSを増やしたりNeuronsの数を増やしたりActivationやFeaturesを 変えたりして解いてみよう

Slide 60

Slide 60 text

60 60 ©MIXI Neural Network Playground: 市松状のデータを分類 ● できるだけ単純なモデルで分類できる状態を探索してみよう

Slide 61

Slide 61 text

61 61 ©MIXI Neural Network Playground: 螺旋状のデータを分類 ● HIDDEN LAYERSを増やしたりNeuronsの数を増やしたりActivationやFeaturesを 変えたりして解いてみよう(少し複雑に)

Slide 62

Slide 62 text

62 62 ©MIXI Neural Network Playground: 螺旋状のデータを分類 ● モデルのRegularizationをL1, Regularization rateを0.001にしたときの精度や NeuronのWeightを確認しよう

Slide 63

Slide 63 text

63 63 ©MIXI Neural Network Playground: 螺旋状のデータを分類 ● モデルのRegularizationをL2, Regularization rateを0.003にしたときの精度や NeuronのWeightを確認しよう

Slide 64

Slide 64 text

64 64 ©MIXI 深層学習における代表的なネットワーク ● DNN ● CNN ● RNN, LSTM ● Transformer ● GAN ● …

Slide 65

Slide 65 text

65 65 ©MIXI DNN(Deep Neural Network) ● NNの層をDeepにしたものがDNN ● 深層学習におけるベーシックなネットワーク 記法例 (Keras) ● 値の合計が1になるように 調整する関数 ● 主に多クラス分類の出力に おける活性化関数として 用いられる Softmax Dence ● 全結合型ニューラルネットワーク

Slide 66

Slide 66 text

66 66 ©MIXI CNN (Convolutional Neural Network) ● 画像など近傍値間で関連が⾼いデータに使うネットワーク ● 画像処理で⾏われるフィルタ処理を学習するというのが思想 ex) エンボスフィルタ, ラプラシアンフィルタ, etc… ● 複雑な処理を少ない訓練パラメータで⾏える ● 畳み込み層とプーリング層が存在する エンボスフィルタのカーネル値 エンボス加工の例

Slide 67

Slide 67 text

67 67 ©MIXI CNN: 画像と⾏列 ● ⽩黒画像は、2次元⾏列で表現できる ➢ SVGAサイズの場合、[800, 600]の⾏列に0〜255の数値が⼊る ● カラー画像の場合、カラーモードの次元を含めた3次元⾏列で表現できる ➢ RGBの場合、 [800, 600, 3]の⾏列に0〜255の数値が⼊る 110 136 115 115 104 134 150 186 197 123 112 199 255 225 123 139 216 209 179 114 95 126 115 94 104 134 150 83 52 123 112 83 57 21 89 47 42 41 21 64 96 126 115 93 104 134 150 83 59 123 112 81 64 44 92 50 49 51 39 67 R G B [4, 5, 3]

Slide 68

Slide 68 text

68 68 ©MIXI CNN: フィルタを⽤いた畳み込み ● CNNでは、画像の⾏列に対してフィルタをかけることで畳み込みを⾏う ● フィルタの⼤きさは[縦, 横, カラーモード]で、縦と横はハイパーパラメータ ➢ カラーモードはInputの画像で決めるため、実装では指定しなくて良い ➢ フィルタをスライドさせ、畳み込んでいく(スライド幅もハイパーパラメータ) ● フィルタの値がweightであり、学習で最適されるパラメータとなる ● フィルタの数はハイパーパラメータとなる 画像 [32, 32, 3] フィルタ [5, 5, 3] スライド幅 1 フィルタ数 6 畳み込み後 フィルタ数分畳み込む

Slide 69

Slide 69 text

69 69 ©MIXI CNN: フィルタを⽤いた畳み込み 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 R G B フィルタ 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 画像 [4, 5, 3] フィルタ [2, 3, 3] スライド幅 1 フィルタ数 1 スライド幅ずつずらしていく 5 + bias 1 = 6 [3, 3, 1] Output 1 0 0 1 1 0 0 1 0 1 0 0 [2, 3, 3] 画像(RGB) [4, 5, 3]

Slide 70

Slide 70 text

70 70 ©MIXI CNN: プーリング ● 畳み込み後に、⾏列を圧縮するために⽤いられる⼿法 ● プーリング幅として[縦, 横, フィルタ数]の⾏列を指定 ➢ フィルタ数は畳み込み時に指定するので、実装では指定しなくて良い ● 指定した⾏列の範囲内における最⼤値や平均値を出⼒することで圧縮を⾏う 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 R G B 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 4 + bias 1 = 6 3 5 3 4 4 3 2 5 [3, 3, 1] Output 1 0 0 1 1 0 0 1 0 1 0 0 フィルタ プーリング幅 [2, 2, 1] スライド幅 1 Max Pooling Average Pooling 6 5 4 5 4 4 3 3.75 [2, 2, 1]

Slide 71

Slide 71 text

71 71 ©MIXI CNN: ネットワークの全体像 https://paperswithcode.com/methods/category/convolutional-neural-networks

Slide 72

Slide 72 text

72 72 ©MIXI CNN: Kerasでの記法例 Padding ● validとsameがある ● validにすると畳み込み後のサイズが フィルタによって小さくなる ● sameにすると元の行列の周辺に0を 埋めるPadding処理を行う ➢ スライド幅1の場合、畳み込み 後もサイズが変わらない Flatten ● 行列を1次元に平坦化する ● NNでは多次元の処理が扱えないので、 CNN -> NN にする前でこの平坦化する 処理を行っている

Slide 73

Slide 73 text

73 73 ©MIXI ● 学習済みモデルの⼀部を利⽤し、追加で解きたいタスクの学習をさせること ● 学習の精度向上や、学習の⾼速化が期待できる ● 出⼒層以外は学習済みモデルを使⽤し、出⼒層やその前の全結合層を新たに 定義して学習させることで、⾃分のタスクに必要な部分のみを学習させる Transfer Learning ● CNNの層までは学習済みモデル のパラメーターで固定 ● Flatten後のFC層は学習可能な パラメーターとして新しく定義 https://paperswithcode.com/methods/category/convolutional-neural-networks 例

Slide 74

Slide 74 text

74 74 ©MIXI ハンズオン https://github.com/nami73b/machine-learning-notebooks-2024 ● 01_image_classification ● 02_transfer_learning ● ハンズオン01と02をVertex AIのJupyter Notebook環境下で トライしてみてください(詳しくはアナウンスします)

Slide 75

Slide 75 text

新卒AI研修 03 ML Algorithm 75

Slide 76

Slide 76 text

76 76 ©MIXI 機械学習アルゴリズム • さまざまな⽤途に応じたアルゴリズムが⽇々開発されている あくまで⼀例だが - 画像分類: CNN, VIT - 物体検出: R-CNN, YOLO, SDD - 構造化データ: 線形回帰, ロジスティック回帰, DNN, 決定⽊ - 時系列: RNN, LSTM, Transformer - ⽣成: Stable Diffusion, LLM

Slide 77

Slide 77 text

77 77 ©MIXI 機械学習アルゴリズム • さまざまな⽤途に応じたアルゴリズムが⽇々開発されている あくまで⼀例だが - 画像分類: CNN, VIT - 物体検出: R-CNN, YOLO, SDD - 構造化データ: 線形回帰, ロジスティック回帰, DNN, 決定⽊ - 時系列: RNN, LSTM, Transformer - ⽣成: Stable Diffusion, LLM

Slide 78

Slide 78 text

78 78 ©MIXI モデル選定とデータ形式(再掲) ● 機械学習における深層学習(Deep Learning)系のモデルは、⾮構造化データに 対してより優れた精度を発揮することが多い ➢ ⾮構造化データの例: ⾳楽, 画像, 動画, テキスト, etc… ● ⼀⽅、構造化データに対しては、勾配ブースティング決定⽊(GBDT)系のモデル のほうがより優れた精度を発揮することが多い ➢ 構造化データの例: 表形式データ, RDB内のテーブルデータ, csvデータ, etc… https://www.datarobot.com/jp/blog/is-deep-learning-almighty/

Slide 79

Slide 79 text

79 79 ©MIXI ● ⼆分⽊の構造を⽤いて、分類‧回帰を⾏う⼿法 ● 複数の条件を⼆分していき、最終的な出⼒を決定する ➢ 決定⽊の条件は学習によって最適化されていく GBDTモデルの基礎: 決定⽊ True False True True False False Attacker Defender Defender Attacker シュート精度 >= 中 ボール奪取力 >= 高 スピード >= 中 例: サッカーの選手の能力から適正ポジション(Attacker or Defender)を予測 シュート精度 ヘディング精度 ボール奪取力 ボディバランス スピード スタミナ 高 高 低 中 高 中 選手A 能力値 木を深くしすぎると、過学習に陥りやすくなる...

Slide 80

Slide 80 text

80 80 ©MIXI ● 単⼀の⽊を深くするのではなく、決定⽊⾃体を複数作成し、 それぞれの出⼒値の多数決や平均を使うことで、最終的な出⼒を得る⼿法 ランダムフォレスト シュート精度 ヘディング精度 ボール奪取力 ボディバランス スピード スタミナ 高 高 低 中 中 高 選手A 能力値 True False True False Attacker Defender Attacker スタミナ >= 高 スピード >= 中 True False True False DefenderAttacker Attacker ボディバラ ンス >= 高 ボール奪取力 >= 中 True False True False Attacker Defender Attacker ヘディング 精度 >= 高 シュート精度 >= 高 Attacker 3 Defender 0 Attacker

Slide 81

Slide 81 text

81 81 ©MIXI ● 単⼀の⽊を深くするのではなく、決定⽊⾃体を複数作成し、 それぞれの出⼒値の多数決や平均を使うことで、最終的な出⼒を得る⼿法 ランダムフォレスト シュート精度 ヘディング精度 ボール奪取力 ボディバランス スピード スタミナ 低 中 高 高 中 中 選手B 能力値 True False True False Attacker Defender Attacker スタミナ >= 高 スピード >= 中 True False True False Attacker Attacker ボディバラ ンス >= 高 ボール奪取力 >= 中 True False True False Attacker Defender Attacker ヘディング 精度 >= 高 シュート精度 >= 高 Attacker 2 Defender 1 Attacker Defender 木の出力値を、どの条件を通るかに関係なく平等に評価してしまう...

Slide 82

Slide 82 text

82 82 ©MIXI Defender - Attackerか否かの 2値分類とする ➢ 0.5 >= Attacker ➢ 0.5 < Defender - ● 学習時に各決定⽊の教師データとの誤差を使って、出⼒値毎のスコアを算出 ➢ スコアから誤差を算出して、その誤差を次の決定⽊へと伝搬 ● 計算式を⽤いてスコアを合計し、推論を⾏う 勾配ブースティング決定⽊(GBDT) シュート精度 ヘディング精度 ボール奪取力 ボディバランス スピード スタミナ 低 中 高 高 中 中 選手B 能力値 True False True False Attacker DefenderAttacker スタミナ >= 高 スピード >= 中 True False True False Attacker Attacker ボディバラ ンス >= 高 ボール奪取力 >= 中 True False True False Attacker Defender Attacker ヘディング 精度 >= 高 シュート精度 >= 高 Defender 3.5 -2 1 -4 2.5 0.5 3 -1.5 0.5 Sigmoid

Slide 83

Slide 83 text

83 83 ©MIXI GBDT系⼿法のライブラリ: LightGBMでの記法 主要な学習パラメータ ● objective 目的変数(ラベル) ○ 二値分類 -> binary ○ 回帰 -> regression ○ 多クラス分類 -> multiclass ● metric 損失関数 ○ 二値分類 -> binary_logloss - loglossはcross_entropyと同義 ○ 回帰 -> MSE, MAE ○ 多クラス分類 -> multi_logloss ● モデルの構造 ○ n_estimators: 決定木の数 ○ learning_rate: 学習率 ○ num_leaves: 葉の数 ○ max_depth: 階層の最大数 パラメータの公式リファレンス https://lightgbm.readthedocs.io/en/latest/Parameters.html

Slide 84

Slide 84 text

84 84 ©MIXI 勾配ブースティング決定⽊の特徴 NNと⽐較した特徴 ● メリット ○ 解釈性が⾼い ➢ 各ノードが使⽤する特徴量がわかる ○ 計算時間、コストが⼩さい ● デメリット ○ ⾮構造化データには(基本的に)⾮対応 ➢ 画像とかはNNの⽅が得意

Slide 85

Slide 85 text

85 85 ©MIXI ● ⼊⼒されたテキスト情報を元に画像を⽣成する技術 Stable Diffusion VAE Encoder 潜在空間に 次元圧縮 各潜在変数 は確率分布 (正規分布) に従う 各ステップで正規分布 に基づくノイズを追加 喜ん で いる オラゴン 0 1 2 3 CLIP Text Encoder [0.32, 0.14, 0.01, …] UNet VAE Decoder 学習時のみ使用 UNet UNet 潜在変数 から画像 に変換 0ステップ目と各ステップのUNetに テキストから抽出された特徴量を追加

Slide 86

Slide 86 text

86 86 ©MIXI RNN, LSTM ● データの並びに意味が存在するデータに適応するネットワーク ex) ⾔語, 株取引, ⾳楽, グラフデータ, etc… ● ⼀時期流⾏ったが、学習に時間がかかるため少し下⽕ Understanding LSTM Networks ディープラーニングブログ

Slide 87

Slide 87 text

87 87 ©MIXI Embedding KerasでのLSTMの記法 ● 入力で与えられた数値をベクトルに変更する ● IDなどの大小関係のない数値を入力とする際 によく使用される ● ベクトル値はパラメータ ➢ 学習が進んでいく事によって、最適化される オラ様 は オラゴン であーる 。 例  0   1   2    3 4 数値変換 Embedding (dim=2) [0.5, 0.6] [0.3, 0.1] [0.6, 0.7] [0.1, 0.8] [0.2, 0.2]

Slide 88

Slide 88 text

88 88 ©MIXI ⾃然⾔語処理(NLP)とTransformer ● NLPでは前処理として⽂章の単語を意味あるベクトルにして処理するのが主流 ○ 例: fastText, word2Vec (⽇本語学習済みモデルもある) ● 以前はRNNやLSTMを使ったseq2seqモデルを使っていたが現在は Transformerベース ○ 主に全結合層とAttention層で構成 ➢ Attention層で、ある⼊⼒が他のどの情報に関連しているかを学習 ○ ⼊⼒値(ベクトル)に位置情報ベクトル(Positional Encoding)を加算 ➢ ある⼊⼒に対する相対的な位置情報を取得 ➢ RNNやLSTMのような再帰構造を取る必要がなくなり、並列処理が可能に ☆ ⼤規模モデル(LLM: Large Language Model)誕⽣のきっかけ ○ 詳細は割愛 元になった論⽂は以下 ➢ Attention is All You Need (https://arxiv.org/abs/1706.03762)

Slide 89

Slide 89 text

89 89 ©MIXI VIT(Vision Transformer) ● Transformerの仕組みを画像分野に応⽤する試み ● 画像を均⼀に分割したパッチを1ピクセルごとのRGB ⾏列に変換し、これを単語のように扱う ● 特徴 ○ CNNベースモデルより精度が⾼い ➢ データセットが⼩さい場合は CNNの⽅が精度が⾼い傾向にある ○ Attentionの機構を利⽤して、 判断根拠(どこに注⽬したか)の抽出ができる パッチ化(均一に分割) パッチごとにベクトル化 (本当はRGBの行列) パッチのベクトルを 単語のように扱う [(0, 0, 0), (0, 0, 0), (225, 10, 10), (235, 5, 5), (255, 0, 0) ...]

Slide 90

Slide 90 text

90 90 ©MIXI ChatGPT

Slide 91

Slide 91 text

91 91 ©MIXI 0.2 0.17 0.02 0.01 … ● Transformer技術を⽤いた⾼精度なChatbot AI ● 文章から次の単語を予測 するタスクを学習 ● モデルはTransformerの デコーダー部分(の改良) を多層にしたもの Generative Pre-Training Supervised Fine-Tuning(SFT) Reinforcement Learning From Human Feedback (RLHF) 釣った 魚 を ___ 料理 食べた 私 ゲーム … 例 ● 教師ありデータセットを 用いてモデルを微調整 ● 強化学習を用いて出力を最適化 報酬から Agentを 最適化 報酬モデル(RM) を学習 強化学習モデル (PPO)を学習 応答 (複数) 入力 (Prompt) 順位付け (ラベル) ラベルを元に ランク学習 応答 (ラベル) 入力 (Prompt) ラベルを元に モデルをFine-Tuning ChatGPT(Generative Pre-trained Transformer) Training language models to follow instructions with human feedback OpenAI et al, 2022

Slide 92

Slide 92 text

92 92 ©MIXI ● LLM(Large Language Model/⼤規模⾔語モデル) ○ 膨⼤なテキストデータに対して事前に学習された深層学習モデル ○ 現状Transformarがベースになっていることが主流 ● 先に解説したChatGPTもLLMの1つ LLM LLMモデル Prompt 質問や命令文 出力 - 生成 - 要約 - 解説 - 翻訳 など

Slide 93

Slide 93 text

93 93 ©MIXI ● LLM(⼤規模⾔語モデル) + ⾃前コンテンツの検索 ○ LLMでの⽣成ではハルシネーション(それっぽい誤情報)がありがち ○ ⾃前コンテンツの検索システムを組み合わせることでハルシネーション対策になる RAG(RetrievalAugmentedGeneration) ・Question: モンストで好奇心旺盛でおっちょこちょ いなキャラ Embedding ベクトルDB Prompt ・Instruction 以下のDocumentを参照して、質問に解答してくだ さい ・Question: モンストで好奇心旺盛でおっちょこちょいなキャラ ・SearchResult パンドラは、神々に作られた少女。金髪碧眼で... LLMで 解答を生成 Retriever Generator

Slide 94

Slide 94 text

94 94 ©MIXI ● Retriever ○ ⼤規模なデータセットから関連する情報を検索‧抽出するパート ○ テキストや画像がベクトルデータに変換されベクトルDBに格納されている RAG: Retriever テキスト Embedding 画像 ベクトルDB 検索したいコンテンツ 近似コンテンツの情報

Slide 95

Slide 95 text

95 95 ©MIXI LangChainについて ● LangChain ○ LLMを⽤いた開発を効率的に⾏うためのライブラリ ○ さまざまなLLMのクラスやRetriever(後述)のクラスが揃っている ○ 破壊的アップデートが多い ○ 過度な抽象化によりカスタマイズ性が悪い メリット ○ 手軽 ○ 本来数百行必要なコードが数行に ○ 新しい技術を試しやすい ○ 実装が抽象化されており、内部の コードを読まなくても簡単に試せる デメリット

Slide 96

Slide 96 text

96 96 ©MIXI ● LangChainではRetrieverの機能をもつクラスがいくつか提供されている ○ 参考: https://python.langchain.com/docs/modules/data_connection/retrievers/ ● 実装例 ParentDocumentRetriever LangChain: Retriever docをsplitterでsubdocに区切り検索を行う SelfQueryRetriever docをLLMを用いてmetadataでfilteringし検索を行う

Slide 97

Slide 97 text

97 97 ©MIXI ● Text Embedding ○ テキストを抽象化ベクトルに変換 ➢ テキスト同⼠の類似度を距離で表現できる ハンズオンではHugging FaceからMultilingual-E5を利⽤します そのほかにも、HuggingFace上にさまざまなモデルや GCP VertexAIではEmbeddings for TextやEmbeddings for Multimodalのサービス上で 各種モデルをAPI利⽤できます Text Embedding   Hugging Face 機械学習モデルの開発と共有、公開をする ためのプラットフォームです 金髪の キャラクター [0.2, 0.1, -0.12 …] パンドラ、金色の髪 と青い目 [0.19, 0.11, -0.12 …] ユビレギリ、片目に 眼帯 [-0.5, 0.43, 0.22 …] ゲキリン、ピンクの 髪と黄色の目 [0.2, -0.41, -0.72 …] 0.9985 -0.4727 0.3948 Cos類似度

Slide 98

Slide 98 text

98 98 ©MIXI ● LLM ○ 代表例は先にでてきたChatgptなど ○ LangChainでさまざまなLLMのクラスが⽤意されていて便利 ○ handsonではGeminiPro 1.5を使⽤ LangChain: LLM

Slide 99

Slide 99 text

99 99 ©MIXI ● LCEL ○ LCEL(LangChain Expression Language) ➢ 各コンポーネントを`|`でつないでChainを定義 ➢ LangChainの各コンポーネントや定義したメソッドを パイプラインに固められる 記法: `chain = (プロンプト | model)`など LangChain: LCEL マグロの釣り方:大海原の王者に挑む マグロ釣りは、釣りの中でも特に挑戦的でエキ サイティングなジャンルです。その引きの強さ と大きさから、「海の王者」とも呼ばれるマグ ロを釣り上げるには、相応の準備と知識が必要 です。 …

Slide 100

Slide 100 text

100 100 ©MIXI RAG: Generator ● Generator ○ Retrieverから得られた情報を⽤いて、質問に即した回答を⽣成するパート ○ プロンプトに正しい情報を使うため、ハルシネーション対策になる Embedding LLMで テキスト 解答を生成 Prompt ・Instruction 以下のDocumentを参照して、質問に解答してくだ さい ・Question: モンストで好奇心旺盛でおっちょこちょいなキャラ ・SearchResult パンドラは、神々に作られた少女。金髪碧眼で... Generator LLMで 解答を生成 「好奇心旺盛でおっちょこちょいな性格であり、 「やっちゃダメ」と言われることを苦手とする。うっ かり禁断の箱を開けてしまうなど、おっちょこちょ いエピソードも。」

Slide 101

Slide 101 text

101 101 ©MIXI ハンズオン https://github.com/nami73b/machine-learning-notebooks-2024 ● 03_document_retrieval_by_LLM_and_RAG ● ハンズオン03をVertex AIのJupyter Notebook環境下で トライしてみてください(詳しくはアナウンスします)

Slide 102

Slide 102 text

新卒AI研修 04 Deployment
 102

Slide 103

Slide 103 text

103 103 ©MIXI 機械学習はトレーニングだけではない 精度指標を⾼めることだけを考えていてはダメ 実際にサービスに機械学習を導⼊するには ● 要件定義 ➢ サービス導⼊のための精度/レイテンシの設定 ● システムワークフローの構築(MLOps) データ収集 前処理 学習 推論 デプロイ ビルド 評価 利用 フィードバック

Slide 104

Slide 104 text

104 104 ©MIXI 要件定義 ● 機械学習で解決すべき問題なのか? ➢ 効果とコストのバランス その他の単純な⼿法で実現できないか ● どの程度の精度が必要か? 担当者がいい感じだねっていったらサービス導⼊は地獄 既存のシステムとの何かしらの数値的評価基準は必要

Slide 105

Slide 105 text

105 105 ©MIXI 要件定義 ● ビジネス的な指標の設定 ユースケースによって、機械学習に求められる指標が異なる 例) 不良品検知の場合 ○ recall(再現率): TP / (TP + FN) ➢ 正常品の巻き込みリスク ○ precision(適合率): TP / (TP + FP) ➢ 不良品の⾒逃しリスク この2つは基本的にトレードオフ どちらを優先するか検討する必要がある TP FP FN TN 正解 正例 負例 正例 負例 予測

Slide 106

Slide 106 text

106 106 ©MIXI 要件定義 ● どこで使うのか? ○ 前もって予測をしておけるか? ○ オンラインで返す場合は結果はキャッシュ可能か? ○ リアルタイムで毎回処理する場合に許容されるレイテンシは? 速度優先?精度優先?程度はケース次第だが...

Slide 107

Slide 107 text

107 107 ©MIXI ● モデルをデプロイして終了ではない ○ モデルの管理 ➢ バージョニングによって切り替え可能な状態にしておく ○ モデルの挙動/パフォーマンス検証 ➢ テスト通りの性能を継続して発揮できているか ○ 再学習 ➢ 定期的?精度低下を検知? ➢ 再学習したモデルは自動でデプロイ?精度を判断してから? これらを継続的に行えるシステム(MLOps)の構築が重要 価値を安定的にユーザーに届ける データ収集 前処理 学習 推論 デプロイ ビルド 評価 利用 フィードバック

Slide 108

Slide 108 text

108 108 ©MIXI ハンズオン https://github.com/nami73b/machine-learning-notebooks-2024 ● 04_deploy_and_serving ● 下記のハンズオンにトライしてみてください

Slide 109

Slide 109 text

新卒AI研修 05 Service in mixi
 109

Slide 110

Slide 110 text

110 110 ©MIXI 今日の研修を通して以下のことを学びました 04_deployment 01_Introduction 今⽇学んだこと 02_data_and_training ● 機械学習とは何か ● 機械学習で何ができるか ● どうやったら学習できるか ● どんなデータがあれば良いのか ● サービスに入れられるのに 考えなければいけないこと 03_ML_Algolithm ● 用途に応じたさまざまな機械学習 手法について

Slide 111

Slide 111 text

111 111 ©MIXI なにを提供できるか 最後に自分のサービスでどんな価値が提供できるか考えてみよう ● どんな解決したい課題があるか ● どんなデータを持っているか ● それは学習できそうか ➢ そもそも既存のモデルが存在しないか? ● サービスに入れる評価基準は決められそうか? ● どういう風にサービスと繋ぐか?

Slide 112

Slide 112 text

112 112 ©MIXI 具体的に考えてみる 前のページの内容を踏まえて、 自分の・想定のサービスにAIを導入する際に、 ● 何に対して機械学習に適用できるか ● どんなことを考えるべきか を考えてみましょう

Slide 113

Slide 113 text

113 113 ©MIXI おわりに お疲れ様でした 本日の講義はこれで無事終了です 是非、今日学んだり思考したことをきっかけに、 サービス改善の選択肢としてAI導入も検討してもらえるように なってもらえると嬉しいです 困ったときは社内に頼りになるエンジニアがいるので、 相談してみてください

Slide 114

Slide 114 text

114 114 ©MIXI 勉強会のお誘い machine-learning系書籍 輪読会 - docbase https://mixigroup.docbase.io/posts/1963364 - slack https://mixigroup.slack.com/archives/C0Y14BVPE 今までやった本 - AIエンジニアのための機械学習システムデザインパターン - AIソフトウェアのテスト - 機械学習デザインパターン - Vision Transformer入門 - 推薦システム実践入門

Slide 115

Slide 115 text

No content