p_np_svm(質問管理番号)

回答日時: 2019/02/07
Q:

 

A:

 

回答日時: 2019/1/10
Q: 機械学習の演習(Jupyter の np_svm)についての質問です。

【 質問① 】
本来は、下記で良いと思われます。
(A式) α <- α + η1*(1-H*α)

np_svmの式は下記のとおりですが、
(B式) α <- α + η1*(1-H*α) – η2*(αT*t)t

「- η2*(αT*t)t」 が付け加えられています。
どのような目的があるのでしょうか?

【 質問② 】
(B式)の(-η2*(αT*t)t)についての質問です。

等式制約のためのラグランジュの未定乗数βを導入すると
(C式) α <- α + η1*(1-H*α-β*t)
と書けそうですが、np_svmの式は、(C式)とは異なります。

(B式)の最後の項は、なぜ、符号がマイナスなのでしょうか?

【 質問③ 】
(B式)の(-η2*(αT*t)t)についての質問です。
aT*t=0 を (1/2)|aT*t|^2=0 として導入しています。
目的を教えてください。

A: 質問全体に対しての回答ですが,制約付きの最適化問題を解くために,np_svmでは制約条件も勾配法で近似的に表現するという手法を選択しました.「制約付きの最適化問題を解く他の手法もある」ということをまず伝えておきます.その前提のもとで以下質問に回答します.

【 質問① 】
aT*t=0という制約条件を近似的に勾配法で実装するためです.

【 質問② 】
(B式)の(-η2*(αT*t)t)はラグランジュ乗数法から導出されたものではなく,勾配法(η2は学習率)から導出されたものですので,(C式)とは異なります。符号にマイナスがつくのは,制約条件として(1/2)|aT*t|^2の最小化という形をとっているので勾配法の結果そうなります(SVMの目的関数自体は最大化).
おっしゃるとおりラグランジュの未定乗数βを導入した場合は,単純に微分すれば(C式)のようにも書けますが,βは本来,ラグランジュ乗数も含めた目的関数を最大化するための変数ですので,(学習率のような)定数として扱うと.解が求まらないと考えられます.(βに対して更新式が導出できればそれで更新しながら求めれば解は求まると思います.)

【 質問③ 】
aT*t=0という制約条件を勾配法で実装するという前提です.最小化する目的関数として|aT*t|としてもよいですが,目的自体は同じである(1/2)|aT*t|^2としたほうが微分計算が簡単,かつパラメータaの値によって更新幅が変化する(|aT*t|が大きければ更新幅も大きくなる)ので収束しやすいという理由です.