818 Views
November 08, 23
スライド概要
自然言語処理の基礎の輪読会第4回の発表スライドです。
2023年10月26日(木) 18:30~
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2023年度後期輪読会#4「IT Text 自然言語処理の基礎」 モデルの評価と誤差逆伝播 京都大学 佐川 薬学部 達也 0
目次 ● 2.7 機械学習モデルの評価 ● 2.8 正則化 ● 2.9 ニューラルネットワーク ● 2.10 計算グラフと自動微分 ● 2.11 ニューラルネットワークに関するその他の話題 1
2.7 機械学習モデルの評価 二値分類器の評価尺度 スパムメールの検知において、メールがスパムであることを Positive(正例)、スパムでないことをNegative(負例)と定義する。 すると、モデルの予測結果を次のようなマトリクス(混同行列)にま とめることができる。 人間(正解) 分類器 Positive Negative 合計 Positive 20 5 25 Negative 15 60 75 合計 35 65 100 2
2.7 機械学習モデルの評価 二値分類器の評価尺度 人間(正解) 分類器 Positive Negative 合計 Positive 20 5 25 Negative 15 60 75 合計 35 65 100 分類器の正解・間違いの仕方を以下のように分類する ・真陽性(true positive): 分類器がPositiveと予測して正解 ・偽陽性(false positive): 分類器がPositiveと予測して間違い ・偽陰性(false negative): 分類器がNegativeと予測して間違い ・真陰性(true negative): 分類器がNegativeと予測して正解 3
2.7 機械学習モデルの評価 二値分類器の評価尺度 評価尺度1. 正解率(accuracy) 正解率 = 正しく判定した事例数 20 + 60 = = 0.800 100 判定した全事例数 単純で感覚的にもわかりやすいが、スパムメールのように片方のラベルに偏っ ている場合、すべて同じラベルと予測しても高いスコアが出てしまう。 全て負例と予測 65 正解率 = = = 0.650 100 判定した全事例数 人間(正解) 分類器 Positive Negative 合計 Positive 20 5 25 Negative 15 60 75 合計 35 65 100 4
2.7 機械学習モデルの評価 二値分類器の評価尺度 評価尺度2. 適合率(precision) 正しく陽性と判定した事例数 真陽性数 20 適合率 = = = = 0.800 陽性と判定した事例数 真陽性数 + 偽陽性数 20 + 5 評価尺度3. 再現率(recall) 正しく陽性と判定した事例数 真陽性数 20 再現率 = = = = 0.571 陽性と判定すべき事例数 真陽性数 + 偽陰性数 20 + 15 人間(正解) 分類器 Positive Negative 合計 Positive 20 5 25 Negative 15 60 75 合計 35 65 100 5
2.7 機械学習モデルの評価 二値分類器の評価尺度 適合率と再現率は、単体だとあまり意味をなさない。 例えば、モデルの予測が0.5以上だった場合正例、そうでなければ負例として いた場合、この閾値0.5を0まで下げると適合率を犠牲にして再現率1が達成で きる。 適合率と再現率両方を加味した評価指標が次のFスコアである。 評価尺度4. Fスコア 適合率 = 2 1 1 + 適合率 再現率 2 × 適合率 × 再現率 2 × 0.80 × 0.57 = = = 0.666 0.80 + 0.57 適合率 + 再現率 人間(正解) 分類器 Positive Negative 合計 Positive 20 5 25 Negative 15 60 75 合計 35 65 100 6
2.7 機械学習モデルの評価 多値分類器の評価尺度 製品の評判が良い、悪い、その他のいずれかである多値分類を考える。 人間(正解) 多値分類での正解率は二値分類 良い評判 悪い評判 の時と同様に正しく判定した事例数 判定した全事例数 で計算、各クラスの適合率・ 再現率・Fスコアは、そのクラス を正例、それ以外を負例 として計算。 分類器 その他 合計 良い評判 10 2 4 16 悪い評判 6 40 18 64 その他 4 16 400 420 合計 20 58 422 500 クラス 適合率 再現率 Fスコア 良い評判 0.625 (10/16) 0.500 (10/20) 0.556 悪い評判 0.625 (40/64) 0.690 (40/58) 0.656 その他 0.952 (400/420) 0.948 (400/422) 0.950 マクロ平均 0.625 ((0.625+0.625)/2) 0.595 ((0.500+0.690)/2) 0.606 マイクロ平均 0.625 (50/80) 0.641 (50/78) 0.633 7
2.7 機械学習モデルの評価 多値分類器の評価尺度 各クラスに対して評価値を計算しているが、可読性が悪いため何らかの方法で平 均をとり、1つの評価値にしたい。(この際、気になるのはいい評判と悪い評判に 対する予測性能であるため、その他は無視する) ・マクロ平均 各クラスについて計算された評価値の平均をとる。各クラスの事例数を加味して おらず、すべてのクラスの性能を等しく重視することになる。 ・マイクロ平均 評価対象に含めたい分類クラスの真陽性数、偽陽性数、偽陰性数を集計してから それぞれの評価値を計算。 クラス 適合率 再現率 Fスコア 事例数の多いクラスの評価値の 影響を受けやすい。 良い評判 0.625 (10/16) 0.500 (10/20) 0.556 悪い評判 0.625 (40/64) 0.690 (40/58) 0.656 その他 0.952 (400/420) 0.948 (400/422) 0.950 マクロ平均 0.625 ((0.625+0.625)/2) 0.595 ((0.500+0.690)/2) 0.606 マイクロ平均 0.625 (50/80) 0.641 (50/78) 0.633 8
2.8 正則化 過学習と正則化 モデルの表現力が高くなると、学習データに過剰に適合して、未知のデータに対する汎 化性能が低下する、過適合がおこりうる。 この対策として、パラメータの値の絶対値が大きくなりすぎないように損失関数を変化 させる正則化と呼ばれる方法が用いられる。 ・L2正則化 損失関数にL2ノルムを加える。 𝐽 𝑤 = 𝐽0 𝑤 + 𝜆| 𝑤 | 2 𝐽0 𝑤 がもともとの損失関数で、𝜆は正則化の強さを制御するハイパーパラメータ。 パラメータの値の絶対値が0から大きく離れると第2項がペナルティとして働く。 ・L1正則化 損失関数にL1ノルムを加える。 𝐽 𝑤 = 𝐽0 𝑤 + 𝜆|𝑤| パラメータが0近くでも損失が発生するため、無視できる入力変数に対応するパラメータ は0になりうる。そのため、L1正則化を特徴選択に用いることもできる。 9
2.9 ニューラルネットワーク ニューラルネットワーク 自然言語処理では深層学習が活用されるようになり、深層学習ではニューラルネ ットワークというモデルが使用される。 ニューラルネットワークにおいて、一つのニューロンは複数の実数値を入力とし、 一つの実数値を出力する。d個の入力を𝑥𝑖 、出力をy、i番目の入力値に対する重み を𝑤𝑖 、バイアスをbとすると、1つのニューロンは次の式であらわされる。 𝑑 𝑦 = 𝑔( 𝑤𝑖 𝑥𝑖 + 𝑏) 𝑖=1 g()は活性化関数と呼ばれる非線形写像で、代表的 なものとしては、シグモイド関数、 ハイパボリックタンジェント、ReLUなどがある。 入力 𝑥1 重みとバイアス 𝑤1 𝑥2 活性化関数 𝑤2 𝑤𝑑 𝑥𝑑 出力 𝑦 ニューロン 𝑏 1 10
2.9 ニューラルネットワーク 活性化関数 𝑎を入力としたとき、各活性化関数は次の式であらわされる。 ・シグモイド関数(sigmoid) 1 𝜎 𝑎 = 1 + exp(−𝑎) ・ハイパボリックタンジェント(tanh) exp 𝑎 − exp(−𝑎) tanh 𝑎 = exp(𝑎) + exp(−𝑎) ・ReLU(rectified linear function) ReLU 𝑎 = max(0, 𝑎) 11
2.9 ニューラルネットワーク 多層ニューラルネットワーク 一つの層だけで構成されるものを単層ニューラルネットワークと呼び、二つ以上 の層で構成されるものを多層ニューラルネットワークと呼ぶ。 多層ニューラルネットワークでは前層の出力が次の層の入力となっており、次式 で表すことができる。 𝑔 𝑦 = 𝒗T 𝑔 𝑾𝒙 + 𝒃 + 𝑐 ℎ1 Wは(i,j)成分𝑊𝑖,𝑗 がj番目の入力から1層目のi番目の ニューロンへの結合の重み、bはi番目の要素𝑏𝑖 が常 に1である入力から1層目のi番目のニューロンへの 結合の重みを表す。 ℎ2 𝑥1 𝑥2 𝑦 ℎ3 1 ℎ4 1 入力層 第1層 (隠れ層) 出力層 12
2.9 ニューラルネットワーク 多層にすることの利点 2入力の二値分類器を考える。 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑏 ≥ 0 左辺の値が0以上の場合出力を1,0より小さい場合出力を0と返すようにする。や りたいことは、 𝑥1 , 𝑥2 のいずれかが1であるとき出力を1とする(OR)、 𝑥1 , 𝑥2 が ともに1であるとき出力を1とする(AND)ようにw, bの値を設定することである。 上式を変形すると 𝑤1 𝑏 𝑥2 ≥ − 𝑥1 − 𝑤2 𝑤2 となり、 𝑥1 , 𝑥2 平面でy=1を返すべき(〇印)とy=0を返すべき(×印)を直線で分 離するようにw, bの値を設定するととらえなおすことができる。 13
2.9 ニューラルネットワーク 多層にすることの利点 4つの論理演算子 ・𝑥1 ∨ 𝑥2 (OR): 𝑥1 , 𝑥2 のいずれかが1の時、y=1 ・ 𝑥1 ∧ 𝑥2 (AND): 𝑥1 , 𝑥2 がともに1の時、y=1 ・ ¬(𝑥1 ∧ 𝑥2 )(NAND): 𝑥1 , 𝑥2 のいずれかが0の時、y=1 ・ 𝑥1 ⊕ 𝑥2 (XOR): 𝑥1 , 𝑥2 のどちらか一方が1の時、y=1 の内、XOR以外の入出力以外は再現できる(〇、×を線形分離できる)ことがわかる。 しかしXORは(𝑥1 ∨ 𝑥2 ) ∧ (¬(𝑥1 ∧ 𝑥2 ))で表現でき、ニューラルネットワークの各層はOR, AND, NANDは表現できることから層を重ねることでXORも放言することができ、モデルの表現力が向上 するという意味で層を増やす 𝑥 𝑥 メリットがあるといえる。 𝑥2 𝑥2 𝑥2 2 1 1 1 1 OR 𝑥1 1 AND 𝑥1 1 NAND 𝑥1 1 XOR 𝑥1 14
2.10 計算グラフと自動微分 計算グラフ 次の関数fの(x,y,z)=(-2,5,-4)における勾配を考える。 𝑓 𝑥, 𝑦, 𝑧 = 𝑥 + 𝑦 𝑧 この程度の関数であれば手計算で。 𝜕𝑓 𝜕𝑓 𝜕𝑓 = 𝑧, = 𝑧, =𝑥+𝑦 𝜕𝑥 𝜕𝑦 𝜕𝑧 𝜕𝑓 𝜕𝑓 𝜕𝑓 と計算でき、 (x,y,z)=(-2,5,-4)より( , , ) = −4, −4,3 という勾配が得ら 𝜕𝑥 𝜕𝑦 𝜕𝑧 れる。 ここで、この関数の計算手順をグラフとしてあらわした計算グラフを考える。 −2 𝑥 計算グラフを用いると、機械的に勾配 q=3 を計算することができる。 𝑦 𝑧 5 −4 𝑓 = −12 15
2.10 計算グラフと自動微分 計算グラフ 𝜕𝑓 の値を求めるが、合成関数の微分に関する連鎖律を用いる 𝜕𝑥 𝜕𝑓 𝜕𝑓 𝜕𝑞 𝜕𝑞 𝜕𝑞 と = と書ける。q(x,y)=x+yなので = 1, =1 𝜕𝑥 𝜕𝑞 𝜕𝑥 𝜕𝑥 𝜕𝑦 𝜕𝑔 𝜕𝑞 𝜕𝑓 掛け算の微分ではg(u,v)=uvに対して = 𝑣, = 𝑢が成り立つため、 =z 𝜕𝑢 𝜕𝑣 𝜕𝑞 先ほどと同様に となる。 𝜕𝑓 以上より、 𝜕𝑥 = 𝜕𝑓 𝜕𝑞 𝜕𝑞 𝜕𝑥 = 𝑧 × 1 = −4と計算できる。 どんなに複雑な関数・モデルでも、入力から出力へ関数値を計算していく前 向き計算と出力から入力へ偏微分係数を −2 𝑥 𝜕𝑓 𝜕𝑓 𝜕𝑞 q=3 計算していく後ろ向き計算を組み合わせる 𝜕𝑥 = 𝜕𝑞 𝜕𝑥 = −4 × 1 = −4 ことで、機械的に勾配を計算できる。 これを誤差逆伝播(backpropagation) と呼ぶ。 𝑦 5 𝜕𝑓 = −4 𝜕𝑞 𝜕𝑓 𝜕𝑓 𝜕𝑞 = = −4 × 1 = −4 𝜕𝑦 𝜕𝑞 𝜕𝑦 −4 𝑓 = −12 𝜕𝑓 =1 𝜕𝑓 𝜕𝑓 =3 𝜕𝑧 16
2.11 ニューラルネットワークに関するその他の話題 最適化手法・ミニバッチ化 (a)最適化手法と初期値依存 ニューラルネットワークの学習では確率的勾配降下法(SGD)以外にもモメンタム SGD、RMSprop、Adagrad、Adamなど様々な最適化手法が用いられる。どの手法 が適しているかは手探りで調べる必要がある。 また、最適化で求まるのは局所最適解であるため、モデルのパラメータ初期値によ って結果は大きく変わりうる。初期値を変えたりして適切な解に収束するように工 夫する必要がある。 (b)ミニバッチ化 これまでの説明ではランダムに一つの事例を選んでモデルのパラメータ更新を行っ ていたが、実際には複数の事例をミニバッチと呼ばれるまとまりにして、このまと まりごとに勾配を計算、パラメータ更新を行うことが多い。勾配はミニバッチ中の 各事例の勾配の平均で計算され、ミニバッチの事例数をバッチサイズという。ミニ バッチ化することで局所解に速く近づけることが期待でき、GPUやTPUなどを使っ て並列処理を行うと、学習を高速化できる。 17
2.11 ニューラルネットワークに関するその他の話題 ドロップアウト (a)ドロップアウト ニューラルネットワークは高い表現力を持つがゆえに過学習しやすい。過学習を防 ぐ方法として、ドロップアウトがよく用いられる。 ドロップアウトでは確率pである層のニューロンを削除し、ニューロン間の依存を 小さくすることでモデルの汎化性能を向上させる。(ニューロンを実際に削除してい るわけではなく、ほとんど1だが割合pで0となっているベクトル(マスク)を用意し、 ある層のニューロンの出力にこのマスクをかけることで、一部のニューロンの出力 を無効化する) 推論時にはドロップアウトを適用しないが、学習時の状況に近づけるため、重みパ ラメータの値をp倍する。 18