[DSO] Machine Learning Seminar Vol.1[DSO] Machine Learning Seminar Vol.1
2020-02-13
SKUE
 
Chapter1:「データから学習する能⼒」をコンピュータChapter1:「データから学習する能⼒」をコンピュータに与えるに与える
機械学習の⼀般概念
3種類の学習と基本⽤語
機械学習システムをうまく設計するための構成要素
データ解析と機械学習のためのPythonのインストールとセットアップ
機械学習の⼀般概念機械学習の⼀般概念
機械学習はデータの意味を理解するアルゴリズムの応⽤と科学とされてい
る。蓄積されたデータから意味を⾒出し知識に変えることができる。
機械学習は⼈⼯知能の⼀分野として発展し、データを分析してルールを導き
出すなどを⼈⼿を介さずに⾏えるようにした。
3種類の学習と基本⽤語3種類の学習と基本⽤語
機械学習は⼤きく分けて3種類ある
教師あり学習
教師なし学習
強化学習
教師あり学習教師あり学習
ラベル付けされたトレーニングデータからモデルを学習し、未知のデータを予測でき
るようにすることを⽬標とした機械学習。⽬的関数として真のラベルとの誤差⼆乗和
などを取り、それらの最適化を⾏う。
分類(バイナリ、マルチクラス):離散値が教師データ。
回帰:連続値が教師データ。
 
 
 
教師なし学習教師なし学習
ラベル付けされていないデータをもとにデータの構造を抽出するための機械学習。
クラスタリング:階層クラスタリング、⾮階層クラスタリング(k-means)
次元圧縮:PCA
 
 
 
強化学習強化学習
エージェントが環境とのやり取りを通じて報酬の最⼤化をする学習⽅法。
教師あり学習は正例や負例を当てることを⽬的関数として学習していたが、
強化学習では報酬という⽬的関数をおいてそれの最適化を⾏う。
ゲームにおける報酬は「勝ち負け」
Webサービスにおける報酬は「コンバージョン」
⾃動運転における報酬は「安⼼⾛⾏(⾮定量的)」
 
基本⽤語基本⽤語
特徴量:分析対象のデータセットからラベルを除いたもの。(属性、計測値
など)
線形代数(特徴量全体は⾏列、各々の特徴量はベクトル)
サンプル:機械学習で扱うデータセットのこと。インスタンスとも観測とも
呼ぶ。
ラベル:教師データのこと。ターゲットとも呼ぶ。
機械学習システムを構築するためのロードマップ機械学習システムを構築するためのロードマップ
1.前処理:トレーニングデータセットとテストデータセットを作る⼯程。
特徴抽出やスケーリング
特徴選択
次元削減
サンプリング
2.学習:アルゴリズムの⼯程。
機械学習のモデル選択:モデルは数え切れないほどある。
交差検証(クロスバリデーション):交差検証のやり⽅も様々あ
る。
性能指標:指標も様々。
ハイパーパラメータ最適化:最適化の⽅法も様々。
3.評価
テストデータセットを使った最終モデルの評価(⼆度漬け禁⽌)
kaggleで⾔うとPrivate Score⽤のデータセットに該当。
4.予測
新しいデータにモデルを適⽤して予測する。それを任意のアプリケ
ーションで⽤いる。
データ解析と機械学習のためのPythonのインストールとセットアッデータ解析と機械学習のためのPythonのインストールとセットアッププ
教科書ではAnacondaがおすすめされているが、Google Colabで良いと思われ
る。
データサイエンス系のパッケージ
NumPy
pandas
matplotlib
SciPy
scikit-learn
Chapter2:分類問題- 単純な機械学習アルゴリズムのトChapter2:分類問題- 単純な機械学習アルゴリズムのトレーニングレーニング
パーセプトロン
ADALINE
勾配降下法
勾配降下法とスケーリング
確率的勾配降下法
パーセプトロンパーセプトロン
⼈⼯ニューロン
パーセプトロンの学習規則
Pythonでの実装
⼈⼯ニューロン⼈⼯ニューロン
zを総⼊⼒、xを⼊⼒値、wを重みベクトルとする。
以下の単位ステップ関数を定義する。
これを決定関数と呼ぶ。
まら、閾値を左辺に移動し、インデックス0の重みを
として改めてパーセプトロンを定義すると。
で表すことができる。この負の閾値、
のことをバイアスユニットと呼ぶ。
z = x = + ⋯ +w
T
w1 x1 wm xm
ϕ(z) =
{
1 z ≧ θ
−1 z < θ
なお、θ は閾値となっている。
= −θw0
= 1x0
z = x = + + ⋯ +w
T
w0 x0 w1 x1 wm xm
ϕ(z) =
{
1 z ≧ 0
−1 z < 0
= −θw0
パーセプトロンの学習規則パーセプトロンの学習規則
1.重みを0または値の⼩さい乱数で初期化する。
2.トレーニングサンプルごとに以下の⼿順を実⾏する。
2-1.出⼒値を計算する(単位ステップ関数による予測)
2-2.重みを更新する
における重みの更新は
に従って⾏われる。ηは学習率で0.0〜1.0以下の定数がおかれる。yの真の値と予測値
との間で差異があれば重みを更新するという仕組みになっている。
これらはベクトルなので、各々の要素がこの更新式によって同時に更新されることと
なる。
z = x = + ⋯ +w
T
w1 x1 wm xm
:= + Δwj wj wj
Δ = η( − )wj y
(i)
ŷ 
(i)
x
(i)
j
パーセプトロンの学習規則の思考実験パーセプトロンの学習規則の思考実験
正しくラベルを予測した場合
予測が間違っていた場合(その1):xが⼩さいケース(η=1)
予測が間違っていた場合(その2):xが⼤きいケース(η=1)
このように誤分類したとして、xの値や学習率によって⼤きく重みの更新がなされるこ
とになる。なお、パーセプトロンが収束するケースは、2つのクラスが線形分離可能
で学習率が⼗分に⼩さいときに限られる。
線形分離が不能な場合は、トレーニングの最⼤回数(エポック)や誤分類の最⼤数を
設定することで重み付けの更新を終了させる。
Δ = η(−1 − (−1)) = 0wj x
(i)
j
Δ = η(1 − 1)) = 0wj x
(i)
j
Δ = η(1 − (−1)) = η2 = 1 × 2 × 0.5 = 1wj x
(i)
j
x
(i)
j
Δ = η(−1 − 1)) = −η2 = −1 × 2 × 0.5 = −1wj x
(i)
j
x
(i)
j
Δ = η(1 − (−1)) = η2 = 1 × 2 × 2 = 4wj x
(i)
j
x
(i)
j
Δ = η(−1 − 1)) = −η2 = −1 × 2 × 2 = −4wj x
(i)
j
x
(i)
j
 
Pythonでの実装Pythonでの実装
 
 
定義
生成 際 自動的 呼 出
関数 再利用 際 必要 指定 以下 見 様 値 持
関数間 利用
学習率
反復回数
乱数
 
乱数 生成
分布 中心 平均
分布 標準偏差
出力 際 最初 意味
変数 数 返
誤差 空箱
反復回数 繰 返 場合 意味
繰 返 処理 形 変換 関数 数
繰 返
前述 更新式
重 更新
設定 別 更新
誤差 整数 足
反復 誤差
誤差 重 伴 値 返
内積 計算
単位 関数
パーセプトロンモデルのトレーニングパーセプトロンモデルのトレーニング
 
0 1 2 3 4
145 6.7 3.0 5.2 2.3 Iris-virginica
146 6.3 2.5 5.0 1.9 Iris-virginica
147 6.5 3.0 5.2 2.0 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica
149 5.9 3.0 5.1 1.8 Iris-virginica
 
目的変数 抽出
正例 負例 指定
行目 列目 抽出
  値
  決定領域
ADALINEADALINE
単層ニューラルネットワーク。
パーセプトロンの改良版。重みの更新⽅法がパーセプトロンと異なり、線形
活性化関数に基づいてなされる。
ただし最終的な予測にはパーセプトロンと同様に閾値関数を⽤いている。
パーセプトロンとの違いとして誤差の計算が線形活性化関数の出⼒値と真の
ラベルとなっている点があげられる。
ADALINEの学習規則はWidrow-Hoff則と呼ばれる。
⼆乗損失の最⼩化を最急降下法で解くことを指す。
 
勾配降下法勾配降下法
機械学習の学習過程において⽬的関数を最適化するための⼿法の⼀つ。
今回のADALINEの場合は重みの学習に以下のコスト関数(誤差平⽅和)を⽤いる。
この関数は凸関数であり、微分可能であることから、勾配降下法を⽤いて最⼩化する
ことができる。
この⽬的関数における重みの更新は
で⾏われる。勾配の負値、つまり反対向きにパラメータを更新することに注⽬された
い。∇J(w)の各要素については
よって、更新式は以下のように表される。
J(W ) = ( − ϕ( )
1
2 ∑
i
y
(i)
z
(i)
)
2
w := w + Δw
Δw = −η∇J(w)
= − ( − ϕ( ))
∂J
∂wj
∑
i
y
(i)
z
(i)
x
(i)
j
Δ = −η = η ( − ϕ( ))wj
∂J
∂wj
∑
i
y
(i)
z
(i)
x
(i)
j
Pythonでの実装Pythonでの実装
 
 
活性化関数
誤差
重 更新 更新式 従
別 重 更新
誤差二乗和 割 収束 判
断 使
内積 計算
線形活性化関数 今回 何 意味 持 次章以降 回帰 説明
比較
単位 関数
 
 
スケーリングスケーリング
標準化
各特徴量の平均をずらして中⼼が0になるようにして、各特徴量の標
準偏差を1にする。
μ_jはサンプルの平均で、それをすべてのトレーニングサンプルから引き、
サンプルの標準偏差σ_jで割ることで標準化を⾏うことができる。
標準化が勾配降下法による学習に役⽴つ理由
探索空間が限られ、⼤局的最⼩値を⾒つけ出すためのステップ数が
少なくて済むため。
=x
′
j
−xj μj
σj
 
 
標準化すれば、η= 0.01でトレーニングしても収束していくことがわかる。
ただし、全て分類できても誤差平⽅和は0にはなっていない。
確率的勾配降下法確率的勾配降下法
勾配降下法の問題点
バッチ勾配降下法においては数百万のトレーニングサンプルがあっ
たとして、そのすべてを同時に扱って重みの更新を⾏うため計算コ
ストが⾼くついてしまう可能性がある。
勾配降下法を再掲する。
このsummationが問題となる。
そこで、確率的勾配降下法ではトレーニングサンプルごとに段階的に重みを更新す
る。
トレーニングサンプルごとに重み更新するに際して、トレーニングサンプルをランダ
ムな順序に並べ替えることが重要となる。偏りがある場合、段階的にやったとしても
重みベクトルが更新前と更新後で同じ値になる可能性がある。
Δ = −η = η ( − ϕ( ))wj
∂J
∂wj
∑
i
y
(i)
z
(i)
x
(i)
j
η( − ϕ( ))y
(i)
z
(i)
x
(i)
Pythonでの実装Pythonでの実装
 
重 初期化
空箱
関
空箱
一 更新式 従 更新 際
値 返
平均 計算
平均
 
重 初期化
数 大 場合
繰 返 重 更新
個 場合 回 重 更新
並 替
重 初期化
 
活性化関数
誤差
更新式 従 重 更新
別 更新
誤差二乗和 計算 割
 
 
SGDを使うことで、少ないエポック数でコストを低減させることができている。
15エポックを過ぎると勾配降下法と同じ⽔準になる。  
少ないエポック数で済むことから、オンライン機械学習など計算リソースが限られた
環境においてSGDを使う便益がある。
 
オンライン機械学習においてストリーミングデータを使って更新したい場合は以下の
ように記述する。
 
 
 
参考情報参考情報
http://ibisforest.org/index.php?Widrow-
Hoff%E3%81%AE%E5%AD%A6%E7%BF%92%E8%A6%8F%E5%89%87
(http://ibisforest.org/index.php?Widrow-
Hoff%E3%81%AE%E5%AD%A6%E7%BF%92%E8%A6%8F%E5%89%87)
https://speakerdeck.com/kirikisinya/xin-zhe-renaiprmlmian-qiang-hui-at-ban-
zang-men-number-3 (https://speakerdeck.com/kirikisinya/xin-zhe-
renaiprmlmian-qiang-hui-at-ban-zang-men-number-3)

[DSO] Machine Learning Seminar Vol.1 Chapter 1 and 2