私たちは機械学習アルゴリズムの開発に多くの時間を費やしました。しかし、導入後にアルゴリズムのパフォーマンスが悪ければイライラするでしょう。問題は、アルゴリズムが期待どおりに機能しない場合に次に何をすべきかということです。何が悪かったのでしょうか? トレーニング データの量は十分でしたか? 適切な機能を使用しましたか? さらにデータを収集し続ける必要がありますか? 可能ですが、非常に時間と費用がかかります。さらに機能を追加すべきでしょうか? それも高価になる可能性があります。
どの方向へ行けばいいでしょうか? 機械学習アルゴリズムが適切に動作しない場合は、次に何をすべきでしょうか? いくつかの選択肢があります。
では、次に試すべきものはどれでしょうか? 何でもすぐに試し始めるのは得策ではありません。無駄なことに時間をかけすぎてしまう可能性があるからです。まず問題を特定し、適切な措置を講じる必要があります。学習曲線により問題を簡単に検出できるようになり、多くの時間を節約できます。 学習曲線は、アルゴリズムのパフォーマンスを向上させる方法を決定するのに非常に役立ちます。これは、アルゴリズムがバイアスやアンダーフィッティング、分散やオーバーフィッティング、あるいはその両方に悩まされているかどうかを判断するのに役立ちます。 学習曲線の仕組み 学習曲線はコスト関数のグラフです。同じ図では、トレーニング データのコスト関数とクロス検証データのコスト関数が、アルゴリズムに関する重要な洞察を提供します。念のため、コスト関数の式は次のとおりです。 つまり、予測出力から元の出力の二乗を引いた値を、トレーニング データの量の 2 倍で割った値になります。学習曲線をプロットするには、これらのコスト関数をトレーニング データ数 (m) の関数としてプロットする必要があります。すべてのトレーニング データを使用するのではなく、トレーニング データの小さなサブセットのみを使用してデータをトレーニングします。 次の画像を見てください。 トレーニング データに使用するデータが少なすぎると、アルゴリズムはトレーニング データにぴったり適合し、コスト関数は 0 を返します。 上の図では、データをトレーニングするために 1 つ、2 つ、または 3 つのデータ アルゴリズムのみを使用すると、非常に少ないデータで非常によく学習でき、トレーニング コストがゼロまたはゼロに近いことが明確に示されています。ただし、このタイプのアルゴリズムは他のデータではうまく機能しません。 このアルゴリズムにクロス検証データを適合させようとすると、クロス検証データのパフォーマンスが低下する可能性が高くなります。したがって、クロス検証データのコスト関数は非常に高い値を返します。 一方、アルゴリズムをトレーニングするためにさらに多くのデータが必要になると、トレーニング データに完全には適合しなくなります。そのため、研修コストが高くなります。 同時に、アルゴリズムは大量のデータでトレーニングされるため、クロス検証データのパフォーマンスが向上し、クロス検証データのコスト関数はより低い値を返します。これが学習曲線を構築する方法です。 学習アルゴリズムの開発 学習曲線をプロットする方法を段階的に説明します。学習曲線をプロットするには、まず機械学習アルゴリズムが必要です。簡単にするために、線形回帰アルゴリズムを使用します。まず、線形回帰アルゴリズムを開発します。 まず、パッケージとデータセットをインポートします。ここで使用するデータセットは、Andrew Ng の Coursera 機械学習コースから取得したものです。このデータセットでは、X 値と y 値が Excel ファイル内の別々のワークシートに整理されています。 繰り返しになりますが、X は機械学習アルゴリズムの開発とトレーニングに使用する機能です。 y は予測する必要がある出力特徴です。 クロス検証データの X 値と y 値も、同じ Excel ファイル内の他の 2 つのワークシートに整理されています。この記事の最後にデータセットへのリンクを記載します。データセットを自由にダウンロードして練習してください。
同様に、トレーニング セットの y 値をインポートします。
線形回帰アルゴリズムを簡単に開発してみましょう。 (1)定義仮説 線形回帰では、学校で学んだ非常に基本的な線形方程式を使用して予測を行います。式は次のとおりです。 Y = C + BX 機械学習では、異なる用語を使用します。 ここで、「h」は仮説または予測値、theta0 と theta1 は係数、X は入力特徴です。 ここでは、X がすでにあります。 「h」を計算し、それが y の値と一致することを期待する必要があります。なぜなら、私たちの目標は y の値を予測できるようにすることです。 最初は Theta0 と theta1 がランダムに初期化されます。反復を通じて theta0 と theta1 の値を改良し続けます。 各反復では、コスト関数と勾配式を使用してコストを計算し、シータ値を更新します。 (2)コスト関数と勾配降下法 コスト関数は、予測値が元の出力機能とどの程度異なるかを示します。ここで、出力特徴は y であり、予測出力は「h」です。したがって、コスト関数は「h」が「y」からどれだけ逸脱しているかを示します。コスト関数の値をできるだけ低くしたいのです。 コスト関数の式は次のとおりです。 コスト関数が最小化されるまでアルゴリズムを排除し続けます。各反復において、勾配降下法を使用してシータ値を更新します。 シータ値を更新するには、前のシータ値から勾配降下法を減算します。コード化するとより明確になります。 ここで、m はトレーニング データの数、alpha は学習率です。 (3)線形回帰アルゴリズムの開発 上記の式を使用して仮説とコスト関数を開発します。
ここで、パラメーター theta0 と theta1 を最適化するために勾配降下法を定義します。各反復で、シータ値を更新し、コスト関数とシータ値を追跡します。 最後に、各反復のシータ値のコストのリストを返します。コードは非常にシンプルです。こちらをご確認ください。
線形回帰アルゴリズムを完了しました。出力を予測する方法が必要です。予測メソッドでは、勾配降下関数と仮説関数からの最終的なシータを使用して予測を行います。
ここで、パラメータをゼロに初期化し、predict 関数を使用して出力変数を予測します。
ここで、df または X の予測出力 (h) と元の出力 (y) を同じグラフにプロットします。
アルゴリズムはうまく機能しているようです。予測出力ラインは中央の位置から始まります。 学習曲線を構築する時が来ました!!! 学習曲線を描く これで、学習曲線を描くことができます。まず、クロス検証データセットの X 値と y 値をインポートしましょう。前述したように、これらは別々の Excel ワークシートに整理されます。
これを実現するには、gradient_descent 関数を少し変更します。 前の gradient_descent 関数では、各反復のコストを計算しました。これは、従来の機械学習アルゴリズム開発における良い方法であるため行います。 しかし、学習曲線の場合、各反復のコストは必要ありません。したがって、実行時間を節約するために、各エポックでのコスト関数の計算を除外します。更新されたパラメータのみを返します。
前述したように、学習曲線を開発するには、トレーニング データのさまざまなサブセットを使用して学習アルゴリズムをトレーニングする必要があります。 トレーニング データセットには 21 個のデータ ポイントがあります。最初は 1 つのデータのみを使用してアルゴリズムをトレーニングし、次に 2 つのデータ、さらに 3 つのデータと、合計 21 のデータを使用してアルゴリズムをトレーニングします。 したがって、トレーニング データの 21 個のサブセットでアルゴリズムを 21 回トレーニングします。また、トレーニング データの各サブセットのコスト関数も追跡します。コードを詳しく見てみると、より明確になります。
トレーニング データの各サブセットのトレーニング パラメーターは次のとおりです。 トレーニング サブセットあたりのコストは次のとおりです。 各サブセットのコストを確認します。トレーニング データが 1 または 2 のみの場合、コストはゼロまたはほぼゼロになります。トレーニング データを追加し続けると、コストは上昇しますが、これは予想どおりです。 ここで、上記のパラメータをトレーニング データのすべてのサブセットに使用して、クロス検証データのコストを計算します。
最初は、トレーニング パラメータが少なすぎるトレーニング データから取得されるため、コストが非常に高くなります。しかし、パラメータが増加し、トレーニング データが改善されるにつれて、クロス検証エラーは減少し続けます。 トレーニング エラーとクロス バリデーション エラーを同じ図にプロットしてみましょう。
これが私たちの学習曲線です。 学習曲線から意思決定を行う 上記の学習曲線は良好に見えます。予想通りの流れになります。最初は、トレーニング エラーが小さすぎ、検証エラーが大きすぎます。 ゆっくりと、それらは完全に重なり合います。それは完璧です!しかし、現実の世界では、これはあまり起こりません。 ほとんどの機械学習アルゴリズムは、最初は完璧に機能しません。ほとんどの場合、解決する必要がある何らかの問題に悩まされています。ここで、いくつかの問題について議論します。 学習曲線は次のようになると考えられます。 トレーニング エラーと検証エラーの間に大きな差がある場合は、分散が大きい問題があることを示します。これは過剰適合問題とも呼ばれます。 より多くのトレーニング データを取得するか、より小さな機能セットを選択するか、またはその両方を行うことで、この問題を解決できる可能性があります。 歪んだ曲線がこのように見える場合、最初はトレーニング エラーが小さすぎ、検証エラーが大きすぎることを意味します。徐々に、トレーニング エラーは大きくなり、検証エラーは小さくなります。しかし、ある意味では、それらは平行になります。図からわかるように、トレーニング データを増やしても、クロス検証エラーは減少しなくなります。 この場合、より多くのトレーニング データを取得しても、機械学習アルゴリズムは改善されません。 これは、学習アルゴリズムが高バイアス問題を抱えていることを示しています。この場合、トレーニング機能を増やすと役立つ可能性があります。 学習アルゴリズムの修正 線形回帰を実行しているとします。しかし、アルゴリズムは正しく機能しません。 何をするか? まず、ここで示すように、学習曲線を描きます。
ニューラル ネットワークの場合も、このバイアスまたは分散の問題に直面する可能性があります。 バイアスが高い問題やアンダーフィッティングの問題の場合は、ニューロンの数または隠れ層の数を増やす必要があります。高い分散や過剰適合の問題を解決するには、ニューロンの数または隠れ層の数を減らす必要があります。異なる数のニューロンを使用して学習曲線をプロットすることもできます。 この記事を読んでいただき誠にありがとうございます。これがお役に立てば幸いです。 |
<<: 無料の Python 機械学習コース 8: 精度と再現率
>>: 2021 年の優れた 5 つの人工知能フレームワーク
近年、人工知能の応用は世界中で大きな進歩を遂げています。職場でのビジネス活動の拡大に伴い、クラウド ...
[[341536]] WeChatグループ乾癬とは、WeChatグループ内の他のユーザーに恥ずかしげ...
近年、大規模言語モデル (LLM) は自然言語処理 (NLP) の分野で革新の波を起こしています。大...
近年、顔認証が話題になっていますが、現実には、通知なく顔認証データを取得したり、強制的に顔認証させら...
ニューロモルフィック コンピューティングは、人間の脳を構成するニューロンとシナプスのメカニズムを模倣...
純資産が1,050 億ドルあるにもかかわらず、彼は今でも毎日自分でコードを書いています。 ?彼の名前...
翻訳者 | 劉涛レビュー | Chonglou AIがなぜ機能するのか誰も知らないですよね?はい、そ...
最近、ディープラーニングが大々的に宣伝されており、人々はニューラル ネットワークをあらゆる場所で使用...
今日まで人工知能は発展してきましたが、人工知能は意識を持っているのでしょうか?チューリング賞受賞者の...
携帯電話の発表会を見れば、AI機能の追加が目に入ります。しかし、多くのユーザーはこれをやや否定的に捉...
「農業」は国家の基盤です。基盤がしっかりしていれば国家は平和になります。農業は国民経済の建設と発展を...
機械学習は、自動化と異常な動作の検出を通じて、よりスケーラブルかつ効率的に IoT デバイスを保護す...