パーセプトロンは、バイナリ分類タスク用の線形機械学習アルゴリズムです。これは、人工ニューラル ネットワークの最初の、そして最も単純なタイプの 1 つと考えることができます。確かに「ディープ」ラーニングではありませんが、重要な要素です。ロジスティック回帰と同様に、2 クラス分類タスクの特徴空間における線形分離を迅速に学習できますが、ロジスティック回帰とは異なり、確率的勾配降下最適化アルゴリズムを使用して学習し、キャリブレーション確率を予測しません。 このチュートリアルでは、パーセプトロン分類機械学習アルゴリズムについて説明します。このチュートリアルを完了すると、次のことが分かります。
チュートリアルの概要 このチュートリアルは 3 つのパート、合計 3 つのセクションに分かれています。彼らです:
パーセプトロンアルゴリズム パーセプトロン アルゴリズムは、2 クラス (バイナリ) 分類機械学習アルゴリズムです。これはニューラル ネットワーク モデルであり、おそらく最も単純なタイプのニューラル ネットワーク モデルです。これは、データの行を入力として受け取り、クラス ラベルを予測する単一のノードまたはニューロンで構成されます。これは、入力の加重合計とバイアス (1 に設定) を計算することによって実現できます。モデルの入力の加重合計はアクティベーションと呼ばれます。 活性化 = 重み * 入力 + バイアス 活性化が 0.0 を超える場合、モデルは 1.0 を出力します。それ以外の場合、モデルは 1.0 を出力します。それ以外の場合は0.0が出力されます。 予測1: 活性化 > 0.0の場合 予測0: 活性化 <= 0.0の場合 入力に線形回帰やロジスティック回帰などのモデル係数が乗算されていると仮定すると、モデルを使用する前にデータを正規化または標準化することをお勧めします。パーセプトロンは線形分類アルゴリズムです。これは、特徴空間内の線 (超平面と呼ばれる) を使用して 2 つのクラスを分離する決定境界を学習することを意味します。したがって、クラスを線形または線形モデルによって適切に分離できる問題 (線形分離可能と呼ばれる) に適しています。このモデルの係数は入力重みと呼ばれ、確率的勾配降下法最適化アルゴリズムを使用してトレーニングされます。トレーニング データセットの例が 1 つずつモデルに表示され、モデルは予測を行ってエラーを計算します。次に、その例のエラーを減らすためにモデルの重みが更新されます。これはパーセプトロン更新規則と呼ばれます。このプロセスは、トレーニング データセット内のすべての例 (エポックと呼ばれる) に対して繰り返されます。その後、例を使用してモデルを更新するプロセスが何度も繰り返されます。各バッチでは、モデルの重みを更新するためにエラーのより小さな割合が使用され、この割合は学習率と呼ばれるハイパーパラメータによって制御されます。学習率は通常、小さな値に設定されます。これは、学習があまりに速く行われず、モデルの重みの最適化 (検索) プロセスの早期収束と呼ばれる潜在的に低いスキル レベルに陥らないようにするためです。 重み(t+1) = 重み(t) + 学習率 * (期待値i – 予測値) * 入力値i モデルによって生成されたエラーが低いレベルに低下するか改善が停止するか、最大数のエポックが実行されると、トレーニングは停止します。 モデルの重みの初期値は小さなランダム値に設定されます。さらに、トレーニング データセットは各トレーニング エポックの前にシャッフルされます。これは、モデルのトレーニング プロセスを高速化し、改善するために設計されています。したがって、学習アルゴリズムは確率的であり、実行されるたびに異なる結果が得られます。したがって、繰り返し評価を行ってデータセットに対するアルゴリズムのパフォーマンスを要約し、平均分類精度を報告することが推奨されます。学習率とトレーニング エポック数はアルゴリズムのハイパーパラメータであり、ヒューリスティックまたはハイパーパラメータ チューニングを使用して設定できます。 パーセプトロン アルゴリズムについて理解できたので、このアルゴリズムを Python で使用する方法を調べてみましょう。 パーセプトロンとScikit-Learn パーセプトロン アルゴリズムは、Perceptron クラスを通じて scikit-learn Python 機械学習ライブラリで利用できます。このクラスを使用すると、学習率 (eta0) を設定できます。デフォルトでは 1.0 に設定されます。
この実装では、トレーニング エポックの合計数 (max_iter) を構成することもできます。デフォルトでは 1,000 に設定されます。
パーセプトロン アルゴリズムの scikit-learn 実装では、早期停止やペナルティ損失の使用など、検討したいその他の構成オプションも提供されます。実際の例を使用して、パーセプトロン分類器を実証することができます。まず、合成分類データセットを定義しましょう。 make_classification() 関数を使用して、それぞれ 20 個の入力変数を持つ 1,000 個の例のデータセットを作成します。この例では、データセットを作成して要約します。
例を実行するとデータセットが作成され、データセット内の行と列の数が確認されます。
RepeatedStratifiedKFold クラスを使用して、繰り返し層別 k 分割クロス検証を使用してパーセプトロン モデルを適合および評価できます。テスト設定では、10 回の折り畳みと 3 回の反復を使用します。
合成バイナリ分類タスク用のパーセプトロン モデルを評価する完全な例を以下に示します。
この例を実行すると、合成データセットでパーセプトロン アルゴリズムが評価され、10 倍のクロス検証の 3 回の反復にわたる平均精度が報告されます。学習アルゴリズムの確率的な性質を考慮すると、結果は異なる場合があります。例を数回実行することを検討してください。この場合、モデルの平均精度は約 84.7% を達成していることがわかります。
最終モデルとしてパーセプトロン分類器を使用し、新しいデータに対して予測を行うことに決めるかもしれません。これは、利用可能なすべてのデータにモデル パイプラインを適合させ、新しいデータ行を渡して predict() 関数を呼び出すことによって実現できます。以下に示す完全な例でこれを実証できます。
例を実行すると、モデルが適合され、新しいデータ行のクラス ラベル予測が行われます。 予測クラス: 1 次に、モデルのハイパーパラメータの設定について見てみましょう。 パーセプトロンハイパーパラメータの調整 パーセプトロン アルゴリズムのハイパーパラメータは、特定のデータセットに合わせて設定する必要があります。おそらく最も重要なハイパーパラメータは学習率です。学習率を高くするとモデルの学習速度は速くなりますが、スキルが低下する可能性があります。学習率が小さいほどモデルのパフォーマンスは向上しますが、モデルのトレーニングには長い時間がかかる可能性があります。学習率の調査の詳細については、次のチュートリアルをご覧ください: ディープラーニング ニューラル ネットワークをトレーニングするときに学習率を構成する方法 学習率は通常、1e-4 (またはそれ以下) や 1.0 などの小さな対数スケールでテストされます。この場合、次の値をテストします。
次の例では、GridSearchCV クラスと定義した値のグリッドを使用してこれを示します。
例を実行すると、繰り返しクロス検証を使用して各構成の組み合わせが評価されます。学習アルゴリズムの確率的な性質を考慮すると、結果は異なる場合があります。例を数回実行してみてください。この場合、学習率がデフォルトよりも小さいほどパフォーマンスが向上することがわかります。学習率 0.0001 と 0.001 はどちらも約 85.7% の分類精度を達成し、デフォルト値の 1.0 では約 84.7% の精度を達成します。
もう 1 つの重要なハイパーパラメータは、モデルのトレーニングに使用するエポックの数です。これはおそらくトレーニング データセットに依存し、大きく異なる可能性があります。ここでも、1 から 1e+4 までの対数スケールで構成値を調べます。
前回の検索からの良好な学習率 0.0001 を使用します。
グリッドでトレーニング エポックの数を検索する完全な例を以下に示します。
例を実行すると、繰り返しクロス検証を使用して各構成の組み合わせが評価されます。学習アルゴリズムの確率的な性質を考慮すると、結果は異なる場合があります。例を数回実行してみてください。この場合、分類精度は 10 から 10,000 までほぼ同じであることがわかります。興味深い例外としては、学習率とトレーニング エポック数の両方を構成して、より良い結果が得られるかどうかを確認することが挙げられます。
|
>>: 2021年にAIが農業を改善する可能性のある10の方法
イノベーションとテクノロジーの時代において、贅沢な暮らしはスマートホームによって変化しています。これ...
[[420388]] '('、')'、'{'、...
[[432462]]既存の機械学習分類モデルは、性能と解釈可能性に基づいて、大まかに 2 つのカテ...
AI時代に注目すべき新たな変化は、テクノロジー大手がAIチップを独自に開発し始めたことだ。これは一...
GitHub の新製品「GitHub Copilot Enterprise」は、企業独自のコードベー...
[[201737]]私はかつて、機械学習を使用してピグレットの世界で株価と変動を予測する空想的な例を...
現在、人工知能 (AI) に関する同様の規制が世界中の複数の地域で施行され始めており、GDPR に関...
[[188537]] 1. はじめに機械学習は、コンピュータにデータから学習する能力を与え、現在イ...