機械学習アルゴリズムの実践 - Platt SMO と遺伝的アルゴリズム最適化 SVM

機械学習アルゴリズムの実践 - Platt SMO と遺伝的アルゴリズム最適化 SVM

[[206589]]

序文

以前、SVMの双対問題を最適化するために、単純なSMOアルゴリズムを実装しました。αを選択する際には、二重ループを使用して完全にランダムに選択しました。具体的な実装については、「機械学習アルゴリズムの実践 - SVMにおけるSMOアルゴリズム」を参照してください。

この論文では、以前の SMO アルゴリズムの簡略化されたバージョンに基づいて、α ペアを選択するヒューリスティックな方法を使用して SVM を最適化する Platt SMO アルゴリズムを実装します。また、最近遺伝的アルゴリズムフレームワーク GAFT を実装したので、遺伝的アルゴリズムを使用して SVM の元の形式を最適化することも試みました。

  • このアルゴリズムの対応する実装については、https://github.com/PytLab/MLBox/tree/master/svm を参照してください。
  • 遺伝的アルゴリズムフレームワーク GAFT プロジェクトアドレス: https://github.com/PytLab/gaft

文章

SMOにおけるヒューリスティック変数選択

SMO アルゴリズムでは、最適化のために毎回 α のペアを選択する必要があります。ヒューリスティック選択により、目的関数が最も速く減少するように、最適化する変数をより効率的に選択できます。

最初の α1 Platt SMO と 2 番目の α2 Platt SMO には異なるヒューリスティックが使用されます。

最初の変数の選択

最初の変数選択は外側のループです。以前の便利な全体の αα リストとは異なり、ここでは全体のサンプル セットと非境界サンプル セットを交互に使用します。

まず、トレーニング セット全体を走査して、KKT 条件に違反していないかどうかを確認します。変更されたポイントの αiαi と xi、yixi、yi が KKT 条件に違反している場合は、変更されたポイントを最適化する必要があることを意味します。

Karush-Kuhn-Tucker (KKT) 条件は、正定値二次計画問題の最適点に対する必要十分条件です。 SVM デュアル問題の場合、KKT 条件は非常に単純です。

トレーニング セット全体を走査し、対応する α を最適化した後、反復の 2 回目のラウンドでは、非境界 α のみを走査する必要があります。いわゆる非境界 α とは、境界 0 または C と等しくない α 値を指します。 同様に、これらのポイントについても、KKT 条件に違反していないかチェックし、最適化する必要があります。

その後、アルゴリズムは 2 つのデータ セットを交互に実行し続け、最終的にすべての α が KKT 条件を満たすと、アルゴリズムは終了します。

最大のステップ長を持つ α を素早く選択するためには、すべてのデータに対応するエラーをキャッシュする必要があるため、SVM の重要な変数といくつかの補助メソッドを保存するための SVMUtil クラスを特別に作成しました。

以下は、最初の変数に対して交互走査を選択するための大まかなコードと、対応する完全な Python 実装です (完全な実装については、https://github.com/PytLab/MLBox/blob/master/svm/svm_platt_smo.py を参照してください)。

2番目の変数の選択

SMO における 2 番目の変数の選択プロセスは内部ループです。最初の α1 を選択した後、最適化後に選択した 2 番目の変数 α2 がより大きな変化を持つことを期待します。先ほど導いた式によれば

新しいα2の変化は|E1−E2|に依存することがわかります。E1が正の場合、最小のEiがE2として選択されます。通常、各サンプルのEiはリストにキャッシュされており、リスト内の|E1−E2|でα2を選択することでステップサイズがほぼ最大化されます。

上記のヒューリスティックでは関数値を十分に削減できない場合があるため、次の手順を使用して選択します。

非境界データセット上の関数値を十分に低減できるサンプルを第2変数として選択する

境界外データ セットに変数がない場合、2 番目の変数選択はデータ セット全体に対してのみ実行されます。

それでもない場合は、最初のα1を再選択してください

2 番目の変数選択の Python 実装:

KKT条件は一定の誤差を許容する

Platt の論文の KKT 条件の判定では、一定の誤差を許容する許容範囲があります。対応する Python 実装は次のとおりです。

Platt SMO の完全な実装については、https://github.com/PytLab/MLBox/blob/master/svm/svm_platt_smo.py を参照してください。

前のデータセットでは、Platt SMO を使用して最適化し、次の結果を得ました。

セグメンテーション ラインとサポート ベクトルを視覚化します。

Platt SMO によって最適化されたサポートベクターは、SMO アルゴリズムの簡略化されたバージョンとは若干異なることがわかります。

遺伝的アルゴリズムを使用した SVM の最適化

私は最近、遺伝的アルゴリズムのフレームワークを作成しました。遺伝的アルゴリズムは非常に使いやすいヒューリスティックな無誘導探索アルゴリズムなので、遺伝的アルゴリズムを使用して SVM を最適化しようとしました。

遺伝的アルゴリズムの最適化を使用すると、最も直感的な形式である SVM の初期形式を直接最適化できます。

ちなみに、私は独自の遺伝的アルゴリズム フレームワークを紹介したいと思います。このフレームワークを使用すると、SVM アルゴリズムを最適化するために数十行の Python コードを書くだけで済みます。最も重要なのは、適応度関数を記述することです。上記の式に従って、データセット内の各ポイントから分割線までの距離を計算し、最小距離を返してから、それを遺伝的アルゴリズムに入力して進化的反復を行う必要があります。

遺伝的アルゴリズム フレームワーク GAFT プロジェクト アドレス: https://github.com/PytLab/gaft 、詳細な使用方法については README を参照してください。

さて、進化の反復のための集団の構築を始めましょう。

個人と集団の創造

2次元データポイントの場合、[w1、w2]とbの3つのパラメータを最適化するだけで済みます。個体の定義は次のとおりです。

人口規模は600で、人口が作成されます。

遺伝的演算子とGAエンジンの作成

ここでは特別なことは何もありません。フレームワークに組み込まれている演算子を使用するだけです。

適応度関数

この部分では、上記の svm の初期形式を記述するだけで済みます。これには 3 行のコードのみが必要です。

反復を開始

ここでは人口の300世代を繰り返す

遺伝的アルゴリズムで最適化された分割線を描く

得られたセグメンテーション曲線は次のようになります。

完全なコードについては、https://github.com/PytLab/MLBox/blob/master/svm/svm_ga.py を参照してください。

要約する

この論文では、SVM の最適化を紹介し、主に Platt SMO アルゴリズムを実装して SVM モデルを最適化し、遺伝的アルゴリズム フレームワーク GAFT を使用して初期 SVM の最適化を試みます。

<<:  GoogleのAutoML人工知能システムは、人間よりも優れた機械学習コードを作成できるようになりました

>>:  顔認識を完了するための3行のPythonコード

ブログ    
ブログ    
ブログ    

推薦する

製造業者はデジタルツインをどのように活用して生産性を向上できるでしょうか?

メーカーは、競争上の優位性を獲得し、コストを削減し、顧客によりカスタマイズされた体験を提供するために...

AI を使って体内最大の臓器を管理すれば、本当にもっと美しくなれるのでしょうか?

皮膚は人体の中で最も大きな器官であるため、写真を撮るときには必ず皮膚の再生というプロセスを経る必要が...

...

医療用ロボットの具体的な用途は2つありますか?

最近では、手術を補助するさまざまなロボットが病院のあちこちで見られるようになりました。これらのロボッ...

ロボットと触覚センシング技術の衝突、人間とロボットの触覚センシングを初めて探る記事

触覚は人間が相互作用を調整する主な方法の 1 つです。触覚を通じて知覚される触覚は、人間が物体の大き...

人工知能企業が利益を上げるのは難しいと言われていますが、具体的に何が難しいのでしょうか?

[[272155]] 2016年にAlphaGoが「人間対機械」の競争に勝利して以来、人工知能への...

米国はチップ供給を遮断、ロシアはリソグラフィー装置の再構築を決定

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

AI と新しい小売業が出会ったとき、両者は力を合わせて無敵になれるのでしょうか?

[51CTO.com オリジナル記事] 2018 年に最も人気のある 2 つの単語はどれでしょうか...

食品産業における人工知能:農家の意思決定を支援する

人工知能は食品システムを最適化できると思いますか? 精密農業からパーソナライズされた栄養管理まで、農...

マスク氏が示唆:脳の寄生虫が人間を超人的なAIを作らせる

マスク氏はツイッターで奇妙な見解を表明した。人類が超人的な人工知能を創り出した理由は、ある種の「脳寄...

...

3Dチップ技術がコンピューティングに破壊的な変化をもたらす3つの方法:AMD、Graphcore、Intelはそれぞれ独自の秘策を秘めている

高性能プロセッサに関する研究は、ムーアの法則を継続する新たな方向性が到来していることを示しています。...

GPT-4はMITの学位を取得できない、MITの研究チームは「不正行為」と反応したが、ネットユーザーはそれを信じない

数日前、「大規模言語モデルを使用した MIT 数学および EECS カリキュラムの調査」と題された論...

南京科技大学とオックスフォード大学は、1行のコードでゼロショット学習法の効果を大幅に向上させるプラグアンドプレイ分類モジュールを提案した。

ゼロショット学習は、トレーニングプロセス中に出現しなかったカテゴリの分類に重点を置いています。意味記...

...