SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
機械学習のための数学のおさらい
微分法と機械学習
株式会社オープンストリーム
CTO 寺田英雄
2017.08.18
fun-tech
数学ユーザーになろう!
■ 機械学習エンジニアにとって必要な数学力は、
まずは、”ツールとして”数学を使う能力です。
➢ 学校のテストのようなトリビアルな数学問題を解くことが
目的ではありません。
➢ 数式の読み方と、その意味・イメージを理解できればOK。
■ 学校の数学が苦手だった人でも大丈夫です。
■ 言語やライブラリが進化しているので、
面倒な計算はコンピュータに任せればOK。
2
今日の目標
■ 微分法とはどういうことか、だいたい分かる
■ 機械学習に微分法が必要であることが分かる
■ ディープラーニング(NN)の学習と微分の関わりが
ざっくり分かる
■ 微分関連の数学記号に慣れる
3
注:この資料では、説明をシンプルにするため、
数学的な厳密性は省略しています
目次
1. なぜ機械学習には微分法が必要なのか?
2. 微分法のおさらい
3. 微分法による機械学習の実例
4. 数値微分
5. Deep Learning と微分法
6. まとめ
4
5
イントロダクション
1.なぜ機械学習には微分法が必要なのか?
関数(函数/function)のおさらい
■ 数学的な関数のざっくり定義
➢ ある数 x を入れたら、別の数 y が(ある規則に従って)出てくる箱
• 入力変数x、出力変数 y
6
こう書きます
記号は任意です
x, y に使える色々な『数』の種類がある
● 数の種類:数学での呼び方と、プログラムでの呼び方(例)
7
数学 プログラム 例(Python/numpy)
スカラー(scalar) 数値定数、数値変数 0 ; 500 ; x ; y
ベクトル(vector) 1次元配列 v = np.array([1, 4, 5])
行列(matrix) 2次元配列 m = np.array([[3, 7, 11], [1, 8, 2]])
テンソル(tensor) 3次元(以上の)配列 m = np.array([
[[1,2], [3,4]],
[[5,6], [7,8]],
[[9,10], [11, 12]],
])
備考:
*テンソルは、他の数のクラス(スカラ・ベクトル・行列)をまとめて表せる概念です。
テンソル観点で、その数クラスを表すときの配列の次元数のことを『階数』といいます。
スカラー=階数0のテンソル;ベクトル=階数1のテンソル;行列=階数2のテンソル
関数の入力・出力は、上記のどんな組み合わせを用いても良い
関数は便利な考え方
入力から出力を得るもの:なんでも関数とみなせる
■ RDBデータベースは関数
➢ 入力:SQL/出力:クエリ結果データ
■ コンパイラは関数
➢ 入力:ソースコード/出力:実行バイナリ
■ 顔認識は関数
➢ 入力:画像/出力:顔の位置・大きさ
■ 天気予報は関数
➢ 入力:現在までの気象データ/出力:明日の天候、気温、降水確率
8
機械学習(ML)
=
データから(自動的に)
関数を作らせる仕事
9
機械学習利用時の具体的ステップ
1. 問題の性質=作りたい関数の性質を考えて
2. (関数を作らせるための)どのMLアルゴリズムを使うか決める
3. データをMLアルゴリズムに与えて、関数を作らせる
4. できあがった関数を使う
10
どうやって、関数を作っているの?
機械学習:関数の作られかた
1. 関数には調整用のパラメータ変数θがある(ものが多い*)
2. MLアルゴリズムは、あなたのデータに合わせて
『最も良い』パラメータθの値を自動的に決定する
11
パラメータってどんなもの?
*クラスタリング等の例外があります。
こう書きます
パラメータの例
■ 直線:1次関数
■ グラフ:直線
■ パラメータ: θ=(a, b) a:傾き, b:切片
12
1次関数の例
13
パラメータを変える→関数の形が変わる
補足:直線の傾き?
■ x軸方向の変化量⊿xに対するy軸方向の変化量⊿yの割合
➢ =(x軸方向に+1進んだときの、y値の変化量)=a
14
⊿x
⊿y
1
a
パラメータの例
■ 放物線:2次関数
■ グラフ:放物線
■ パラメータ:θ=(a, b, c)
15
2次関数の例
16
パラメータを変える→関数の形が変わる
パラメータの模式図
17
機械学習:関数の作られかた
1. 関数には、調整用のパラメータ変数がある(ものが多い)
2. 各アルゴリズムは、あなたのデータに合わせて
『最も良い』パラメータ(=関数の形)を自動決定している
3. 最も良いパラメータを選ぶ方法:
パラメータに対する評価(良し悪し)を数値化して判断する
→パラメータをいろいろ変化させてみて、評価値の変化をみる
→評価値 E はパラメータθを入力とする関数(と考えることができる)
a. Eが利得値(gain)ならば、最大のものを選ぶ
OR
b. Eが損失値(loss)ならば、最小のものを選ぶ
18
関数の最大・最小を求めたい → 微分法が便利
ここまでのまとめ
なぜ機械学習に微分法が必要なのか?
■ 機械学習とはデータから関数 y=f(x,θ) を作る仕事
■ 目的のデータに『良く合う(適合する)』関数を作りたい
➢ 関数の形はパラメータθで決まる
➢ θによる関数 f の適合度関数 E=h(θ) とする
➢ 関数 h の最大(極大)値・最小(極小)値を求めるのに、
微分法が使える(数学的な原理)
19
20
これが本題
2.微分法のおさらい
微分法の主な使い道
■ (1)関数の最大(極大)値・最小(極小)値問題を解く
■ (2)微分方程式を解く ※今回の範囲外
➢ 自然現象は、微分方程式の形で表現できるものが多い
(例:物体の運動、惑星の運行、水や空気の流れ、電気回路・・・)
➢ 微分方程式を解くと:
• 惑星や宇宙船の軌道を予測・制御できる
• 電気回路の動作を予測・制御できる
• 天気シミュレーション:大気の流れや気温の変化の予測ができる
• etc...
21
微分法による関数の極大・極小値の求め方概略
■ ある関数* f について、『微分』という操作を加えると、
『導関数**』と呼ばれる別の関数を作ることができる。
■ 元の関数 f が極値(極大値or極小値)となる位置では、
導関数の値はゼロとなる。
➢ つまり:導関数の値がゼロになる位置を見つければ、
そこは f の最大(極大)値か最小(極小)値となっている
22
なぜそうなる?
*微分可能な関数
**導関数の別名:微分係数、微分
導関数は、f(x)の各位置における接線の傾きになる
■ 接線って?(接線の定義)
➢ 曲線に”接しているだけ”の線
➢ 曲線上のある一点だけを通り、他の(付近の)点は通らない直線
23
放物線 y = x^2
x=1を通る接線
傾き a=2
3次関数
x=-1 を通る接線
傾き a=-2
接線の傾きがゼロになるとなぜ:極大・極小?
■ 傾きがないので、その付近では関数の値はそれ以上大きく
(OR小さく)なれない
24
接線は無数にある。
接線の傾きがゼロ以外なら、
関数の値はその付近で増減している。
接線の傾きがゼロになる位置
この場合は極小値
極値の例(3次関数)
25
接線を数学的にきちんと定める:極限(1)
■ 曲線y=f(x)上のある点Pと、少し離れた別の点Qを考えます。
■ この2点を通る直線Lを考えます。
■ QをどんどんPに近づけていくと、L(の傾き)は、
どんどん接線Tに近くなります。
26
y=f(x)
T
L
P
Q
x
y
接線を数学的にきちんと定める:極限(2)
■ Qを限りなくPに近づけていったとき、Lが限りなく近づいていく先を求めることを、『点Pに
おけるLの極限を求める』といいます。
➢ この場合のLの極限は点Pの接線Tになります
■ 数式では以下のように書きます(上記の日本語を数式に翻訳)
27
←『直線Lは、P, Qに応じて
決まる』という意味を表現していま
す。
接線を数学的にきちんと定める:極限(3)
■ 直線Lをxy座標で書き直します
■ 接線Tの定義式に当てはめて
28
y=f(x)
T
L
P
Q
⊿x
⊿y
L:
接線を数学的にきちんと定める:極限(4)
■      という値が存在するとき、その値をPにおける微分係数といいます。
     微分係数は以下の記号で表します。
■ 別の記法もあります
29
ライプニッツの記法
「ディ−ワイディーエックス」
と読みます
ラグランジュの記法
「ワイダッシュ」
と読みます
ニュートンの記法
「ワイドット」
と読みます
微分係数を求めることを『微分する』といいます
初歩的な微分の例
例:          を     で微分する。
30
x
y
a a+h
f(a+h)
f(a)
←この計算は、どんな a についても成り立つの
で、a を変数 x と読み直し、関数と考えることが
できる。これを導関数という。
⊿
y
⊿
x
参考:いろいろな導関数(=微分)の公式
31
引用元:https://ja.wikipedia.org/wiki/%E5%BE%AE%E5%88%86
32
3. 微分法による機械学習の実例
一番シンプルな機械学習:最小二乗法
■ 目的
➢ 2つのデータ変数 X, Y があり、X と Y が比例関係にあると想定
されるとき、この X, Y の比例関係に最も近い直線を求めること。
➢ 例:
• X:身長, Y:体重
➢ 応用:身長から体重を予測する。
33
y:体重
x:身長
?
一番シンプルな機械学習:最小二乗法
■ 概略手順
➢ データに対する直線 f の『近さ』を示す関数 g を作る。
➢ 評価関数 g を微分して、極値(最小値)を求める。
■ gの作り方:データとfの当てはめ誤差の二乗
34
y:体重
x:身長
一番シンプルな機械学習:最小二乗法
■ sを全データについて計算し、その総和を計算する
35
y:体重
x:身長
?
1
2
3
4
5
6
7
8
このgを最小化するように
直線fのパラメータを決めればOK
y=f(x)
一番シンプルな機械学習:最小二乗法
■ gの最小値の求め方
■ g を a, bについて微分(偏微分)して、最小値を求める
36
←gは、変数a, b の関数(2変数関数)と見立てる
この連立方程式をとけば良い
#Pythonでは scikitの LinearRegressionクラスで
最小二乗法による関数当てはめができます。
偏微分(partial differenciation)とは?
■ 多変数関数について、どれか一つの変数に着目して微分するこ
と。その際、他の変数は定数と考える。
■ 例:
37
を、yについて偏微分する
xについて偏微分する
(デーエフデーエックスと読みます)
(デーエフデーワイと読みます)
偏微分記号:ギリシャ文字の D
『デー』
『パーシャルディ−』
『パーシャル』
『ラウンドディー』
『ラウンド』
偏微分の図形的イメージ
38
■ fは、(超)空間にある曲面を表す
■ 偏微分は、特定方向への曲面の傾きである
39
コンピュータ上での微分
4. 数値微分
解析的な微分と、数値微分
■ 解析的な微分
➢ 数学の世界:数式で関数を書けるもの。
➢ 手計算できる。
➢ 極大・極小がイッパツで見つかる。(微分=0を解くだけ)
■ 数値微分
➢ 微分を差分に置き換えて数値計算し、微分を『近似』したもの。
• コンピュータでは、極限(無限小)を直接扱えない。
• MLなど現実的な問題では、関数の形は非常に複雑になり、
解析的な数式では表現できない。
➢ 注意点
• 極大・極小は、探索処理で見つける必要がある。
• 厳密に見ると誤差がある。
✓ 実用的に十分な誤差範囲を設定し、そこで計算を打ち切る。
40
数値微分の実装
■ df/dx を ⊿f/⊿x で近似する
■ 十分に小さい ⊿x を決める
➢ 例えば、ディープラーニングでは、1/10000 = 0.0001が使われる
■ 以下を計算する
41
x=a
f(a)
f(a+⊿x
)
x=a+⊿x
数値微分の問題
■ 前か後か?:差分をとる方向によって結果が変わる・不安定
■ 対策:中心差分
42
前方差分
後方差分
真の接線
中心差分
43
5. Deep Learning と微分法
ディープラーニングはややこしい関数の生成器
■ 多層ニューラルネットワークは、複雑で高次元な関数を表現する
仕組み。
➢ 複雑ではあるけれども、関数であることに変わりはない
■ 解析的な微分はできない。
44
ディープラーニングの学習=損失関数の最小化
■ 教師あり学習(分類)
➢ 入力データ:
➢ ラベル(教師):
➢ DLの出力:
➢ 損失関数:
➢ NNの重みパラメータ:
45
Neural Network
←ネットワークの結合状態を調整
文字の正解ラ
ベル
例:手書き文字画像
■ wを勾配法によって繰り返し更新し、Lを最小化します。
つまり:
損失関数の最小化=wの調整
46
Neural Network
←ネットワークの結合状態を示す
となるwを探します。
アルゴリズム
(勾配降下法)
勾配法(勾配降下法)
■ 仮に wを2次元とすると、L はw上に表現された地形図のようなも
のになる。
47
注:実際の学習では、このような『全体像』は見えていません
勾配法(勾配降下法)
■ Lを各次元方向に偏微分した値を見れば、各地点で『最も傾いてい
る向き』が分かる。これを勾配(gradient)という。
48
『ナブラL』と読みます
勾配法(勾配降下法)
■ 勾配の向きにそって少しづつ坂を下れば、
いずれ極小値に到達できる。
49
極小値
学習率『エータ』
どれくらい早く坂を下る
か?
(ハイパーパラメータ)
勾配法のイメージ
■ あなたは突然山に放置されました。濃霧で足元しか見えません。
地図・GPSやコンパス等はありません。
■ あなたは不死身のロボットですが、歩行しかできません。
■ もっとも早く山を降りる方法は?
50
誤差逆伝播法
■ 勾配法の問題
➢ 計算に時間がかかる
■ 誤差逆伝播法(Backpropagation)
➢ 効率のよいwの更新ができる
➢ 詳しくは専門書にて・・・
51
まとめ
■ 機械学習とは?
➢ (複雑な)関数をコンピュータに作らせること
■ 関数を作る方法
➢ パラメータ最適化
■ パラメータ最適化の方法は?
➢ 微分法が使われる
■ 微分とは
➢ 曲線の接線の傾き=導関数を求める
■ 解析的微分と数値微分
■ 偏微分、勾配法とNNの学習
52

Contenu connexe

Tendances

画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
takaya imai
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
 

Tendances (20)

Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)機械学習モデルの判断根拠の説明(Ver.2)
機械学習モデルの判断根拠の説明(Ver.2)
 
Point net
Point netPoint net
Point net
 
Stanでガウス過程
Stanでガウス過程Stanでガウス過程
Stanでガウス過程
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
正準相関分析
正準相関分析正準相関分析
正準相関分析
 
Hyperoptとその周辺について
Hyperoptとその周辺についてHyperoptとその周辺について
Hyperoptとその周辺について
 
金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
 
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
 
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
 
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
 
論文の書き方入門 2017
論文の書き方入門 2017論文の書き方入門 2017
論文の書き方入門 2017
 
【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features
【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features
【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features
 
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing[DL輪読会]GLIDE: Guided Language to Image Diffusion  for Generation and Editing
[DL輪読会]GLIDE: Guided Language to Image Diffusion for Generation and Editing
 

Plus de Hideo Terada

Plus de Hideo Terada (9)

2021 09 豆寄席:(公開用)長く生き残るitエンジニアの”リベラル・アーツ”
2021 09 豆寄席:(公開用)長く生き残るitエンジニアの”リベラル・アーツ”2021 09 豆寄席:(公開用)長く生き残るitエンジニアの”リベラル・アーツ”
2021 09 豆寄席:(公開用)長く生き残るitエンジニアの”リベラル・アーツ”
 
画像処理AIを用いた異常検知
画像処理AIを用いた異常検知画像処理AIを用いた異常検知
画像処理AIを用いた異常検知
 
B-DCGAN Slides for ICONIP2019
B-DCGAN Slides for ICONIP2019B-DCGAN Slides for ICONIP2019
B-DCGAN Slides for ICONIP2019
 
論文紹介 dhSegment:文書セグメンテーションのための包括的ディープラーニングアプローチ
論文紹介 dhSegment:文書セグメンテーションのための包括的ディープラーニングアプローチ論文紹介 dhSegment:文書セグメンテーションのための包括的ディープラーニングアプローチ
論文紹介 dhSegment:文書セグメンテーションのための包括的ディープラーニングアプローチ
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
 
ディープラーニングの2値化(Binarized Neural Network)
ディープラーニングの2値化(Binarized Neural Network)ディープラーニングの2値化(Binarized Neural Network)
ディープラーニングの2値化(Binarized Neural Network)
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門
 
データ中心の時代を生き抜くエンジニアに知ってほしい10?のこと
データ中心の時代を生き抜くエンジニアに知ってほしい10?のことデータ中心の時代を生き抜くエンジニアに知ってほしい10?のこと
データ中心の時代を生き抜くエンジニアに知ってほしい10?のこと
 
技術系文書作成のコツ
技術系文書作成のコツ技術系文書作成のコツ
技術系文書作成のコツ
 

Dernier

Dernier (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

機械学習のための数学のおさらい