翻訳者 |陳俊 レビュー | Chonglou 昨年以来、 ChatGPTやBardなどの大規模言語モデルにより、機械学習は驚異的な地位にまで高まりました。開発者は、これらを使用して、画像生成から支援プログラミングにおける病気の検出まで、さまざまな分野でのユースケースを探索しています。 世界中の大手テクノロジー企業が機械学習への投資を増やしているため、Java 開発者は機械学習モデルのトレーニング方法と使用方法を理解する必要があります。以下では、機械学習の仕組みの基本、機械学習アルゴリズムの実装とトレーニング方法に関する簡単なガイド、インテリジェント アプリケーションを開発するための最も一般的な教師あり機械学習の方法について説明します。 機械学習と人工知能一般的に、機械学習は人間の知能を模倣しようとするAIの分野から進化し、人間の関与なしにアプリケーションがプロセスの改善、コードの更新、オンデマンドでの機能性の拡張を実行できるようにします。 現在、教師あり学習と教師なし学習の 2 つが、最も人気のある機械学習手法です。どちらのアプローチでも、相関関係を調べて学習させるために、大量のデータ レコードを機械に入力する必要があります。収集されたこれらのデータ レコードは通常、特徴ベクトルと呼ばれます。たとえば、住宅タイプのデータの場合、特徴ベクトルには、住宅の総面積、部屋数、住宅の築年数などの特徴が含まれる場合があります。 教師あり学習教師あり学習では、アルゴリズムをトレーニングするために、特徴ベクトルと関連ラベルのセットをマシンに入力する必要があります。ラベルは通常、人間の注釈者によって提供され、特定の質問に対する正しい回答を表します。学習アルゴリズムは、特徴ベクトルとその正しいラベルを分析して、それらの内部構造と関係を見つけます。これに基づいて、機械は質問に正しく答える方法を学習できます。 たとえば、スマート不動産アプリケーションの特徴ベクトルをトレーニングするために、人間の注釈者は、家の大きさ、部屋数、築年数などの要素に基づいて、各家の正しい住宅価格にラベルを付けます。データを分析することで、不動産アプリケーションは「この家はいくらで売れるか?」という質問に答えられるようにトレーニングされます。 トレーニングが完了すると、アプリケーションは、目に見えないラベルのない特徴ベクトルに遭遇した場合でも、新しいクエリに正しく回答できるようになります。 教師なし学習教師なし学習では、人間による注釈や質問なしに答えを予測するようにアルゴリズムがプログラムされます。ラベルや結果を事前に決定するのではなく、教師なし学習では、膨大なデータセットと処理能力を活用して、これまで知られていなかった相関関係を発見します。たとえば、消費者向け製品のマーケティングでは、教師なし学習を使用して隠れた関係や消費者のグループを特定し、最終的に新しいマーケティング戦略や改善されたマーケティング戦略を形成することができます。 教師あり機械学習プロジェクトすべての機械学習はデータに基づいているため、アルゴリズムは基本的に、現実世界のさまざまなデータインスタンスからの入力に基づいて一連の数学モデルを構築し、最終的には新しいデータを使用して未知の結果を予測することを学習する必要があります。 この記事では、現在最も一般的な機械学習手法である教師あり学習に焦点を当てます。前述の不動産のユースケースを続けて、データに意味のあるラベルを付けてみましょう。以下の表1では、住宅レコードの各行に「価格」というラベルが含まれています。行を住宅価格ラベルに関連付けることで、アルゴリズムは最終的にデータセットに含まれていない住宅の市場価格を予測できるようになります (住宅のサイズは平方メートル単位ですが、住宅価格はユーロ単位であることに注意してください)。 表1. 住宅記録
初期段階では、データ レコードに手動で注釈を付ける必要があるかもしれませんが、最終的には、このプロセスを自動化するようにアプリケーションをトレーニングすることになります。つまり、ラベル付けされたデータセットはトレーニングとテストの目的でのみ使用されます。このフェーズの後、機械学習モデルはラベルのないデータのインスタンスで動作できるようになります。たとえば、ラベル付けされていない新しい住宅記録を予測アルゴリズムに入力すると、以前のトレーニング データに基づいて住宅価格が自動的に予測されます。 機械学習モデルのトレーニング教師あり機械学習の課題は、特定の問題に対して適切な予測関数を見つけることです。数学的に言えば、私たちの課題は、入力変数xを受け取り、予測値を返すターゲット予測関数を見つけることです。 図1. ターゲット予測機能の例 ほとんどの場合、 x は複数のデータ ポイントを表します。この場合、それは家の寸法と部屋数の値によって定義される単一の家の 2 次元データ ポイントです。これらの値の配列は固有ベクトルと呼ばれます。一軒家の価格を予測するには、家の寸法と部屋数を含む特徴ベクトル{ 101.0, 3.0 }を使用してターゲット予測関数を呼び出すことができます。 リスト1. 特徴ベクトルを使用してターゲット予測関数を呼び出す
リスト1では、配列変数xvaluesは住宅の特徴ベクトルを表しています。ターゲット予測関数によって返されるy値は、予測される住宅価格です。 機械学習における課題は、未知の、目に見えないデータインスタンスに対して可能な限り正確なターゲット予測関数を定義することです。機械学習では、ターゲット予測関数 ( hθ ) はモデルと呼ばれることもあります。モデルは学習プロセスの結果であり、モデル トレーニングとも呼ばれます。 図2. 機械学習モデル 学習アルゴリズムはラベル付けされたトレーニング例に基づいており、トレーニング データ内のさまざまな構造やパターンを探します。このプロセス中、学習アルゴリズムは徐々に値を修正して損失を減らし、データから一般化できるモデルを生成します。 機械学習のプロセスは通常は探索的であるため、ほとんどの場合、異なる学習アルゴリズムと構成が複数回実行されます。モデルが決定されると、データはモデルを通じて複数回実行されます。これらの反復はエポックとも呼ばれます。 最後に、アルゴリズムはパフォーマンス メトリックに基づいてすべてのモデルを評価し、ラベルのないデータ インスタンスの予測を計算するための最適なモデルを選択します。 線形回帰まず、使用する学習アルゴリズムを選択する必要があります。線形回帰は、最も単純で最も人気のある教師あり学習アルゴリズムの 1 つです。このアルゴリズムでは、入力特徴と出力ラベルの間に線形関係があると想定します。図3の式では、一般線形回帰関数は、特徴ベクトルの各要素を合計し、それにシータパラメータ(θ)を乗算して予測値を返します。このトレーニングプロセス中、θ パラメータは、トレーニング データに基づいて回帰関数を調整するために使用されます。 図3. 一般化線形回帰関数 線形回帰は単純な学習関数ですが、フィードフォワードニューラルネットワークで使用される勾配降下法などのより高度な形式の優れた基盤となります。線形回帰関数では、θ パラメータと機能パラメータは、サブスクリプション番号によって列挙されます。ここでの購読数はシータを表す ベクトル内のパラメータ(θ)と特徴パラメータ(x)の位置。特徴x0は定数オフセット項であることに注意してください。計算を簡単にするために、その値は1に設定されています。したがって、ドメイン固有の機能(家の寸法など)のインデックス作成はx1から開始されます。 x1 が家の特徴ベクトルの最初の値 (家の寸法) に設定されている場合、 x2 は次の値 (部屋の数) に設定されます。 線形回帰を視覚化する場合、データ ポイントを可能な限り近づけようとする座標系上の直線を想像できることに注意してください。以下のリスト2 は、線形回帰関数のJava実装を示しています。数学的にはhθ(x)と表されます。簡単にするために、この計算ではdoubleデータ型を使用します。 apply()メソッドでは、関数の外部で配列の最初の要素が1.0に設定されています。 リスト 2. Java での線形回帰
LinearRegressionFunctionの新しいインスタンスを作成するには、 thetaパラメータを設定する必要があります。シータパラメーターまたはベクトルは、一般的な回帰関数を基礎となるトレーニング データに適応させるために使用されます。このコードのthetaパラメータは、学習プロセス中にトレーニング例に基づいて調整されます。明らかに、トレーニング ターゲット予測関数の品質は、与えられたトレーニング データの品質とのみ比較できます。 次の例では、 LinearRegressionFunction をインスタンス化して、家の寸法に基づいて住宅価格を予測します。 x0 は定数1.0でなければならないことを考慮すると、ターゲット予測関数は2 つのthetaパラメータを使用してインスタンス化されます。そして、シータパラメータは学習プロセスの出力です。新しいインスタンスを作成した後、面積1,330平方メートルの家の予測価格は次のようになります。 対象予測関数の予測線は図4に青い線で示されています。このラインは、すべての住宅サイズの値に対して目標予測を行うことによって計算されます。図には、トレーニングに使用される価格とサイズのペアも含まれています。 図4 ターゲット予測関数の予測線 上図の座標の切片と傾きはθで与えられる。 ベクトル{ 1.004579, 5.286822 }が定義されます。予測グラフは非常に適切に思えますが、 Thetaベクトルがアプリケーションに確実に適していることをどうやって知るのでしょうか?最初の theta パラメータまたは 2 番目のthetaパラメータを変更すると、関数の適合性は向上しますか?最も適切なシータパラメータベクトルを決定するには、ターゲット予測関数のパフォーマンスを評価するユーティリティ関数が必要です。 ターゲット予測機能の評価機械学習では、コスト関数 ( J(θ) ) (「損失関数」とも呼ばれる) は、特定のターゲット予測関数の平均誤差または「コスト」を計算するためによく使用されます。図5に関数の例を示します。 図5 コスト関数 コスト関数は、モデルがトレーニング データにどの程度適合するかを表します。ターゲット予測関数のトレーニングコストを決定するために、各住宅例(i)の二乗誤差を計算できます。ここでの誤差は、計算されたy値と家の例iの実際のy値の間の距離です。たとえば、面積1330平方メートルの住宅の実際の価格は6,500,000ユーロですが、トレーニングされたターゲット予測関数は住宅価格を7,032,478ユーロと予測し、その差 (または誤差) は532,478ユーロになります。このギャップは図4で確認できます。グラフ内のギャップ (またはエラー) は、トレーニング価格とサイズのペアごとに垂直の赤い破線として表示されます。 トレーニングされたターゲット予測関数のコストを計算するには、例の各家の二乗誤差を合計し、平均を計算する必要があります。 J(θ)のコスト値が小さい場合にのみ、ターゲット予測関数の予測はより正確になります。 以下のコード リストでは、コスト関数の単純なJava実装が、ターゲット予測関数、トレーニング レコードのリスト、およびそれらに関連付けられたラベルを入力として受け取ります。予測はループで計算され、誤差は実際のラベル値を減算することによって計算されます。これから二乗誤差を集計し、平均誤差を計算します。コストも double 値として返されます。 勾配降下法を用いたターゲット予測関数のトレーニングコスト関数はターゲット予測関数とシータパラメータの品質を個別に評価するのに役立ちますが、最適なシータパラメータを計算する必要は依然としてあります。ここでは、勾配降下アルゴリズムを使用して計算を実行できます。 勾配降下法を使用してシータパラメータを計算する勾配降下法はコスト関数を最小化できます。つまり、コストが最も低いトレーニングデータ( J(θ) )を見つける。 シータの組み合わせ。 勾配降下法では、偏微分を使用して各変数を徐々に調整します。 これはバックプロパゲーションの典型的な形式であり、他のすべての形式はこれに基づいています。 図6は、より適合性の高い新しいThetaを計算するために使用できる簡略化されたアルゴリズムを示しています。 図6. 勾配降下法はコスト関数を最小化する 各反復において、 シータベクトルの各パラメータθは、新しい、より良い値に計算されます。同時に、学習率 α は各反復の計算ステップ サイズを制御し続けます。この計算は、適切かつ十分なθ値の組み合わせが得られるまで繰り返されます。たとえば、図7の線形回帰関数には 3 つのthetaパラメーターがあります。 図7. 3つのシータパラメータを持つ線形回帰関数 各反復( 「エポック」 )において、アルゴリズムは各シータパラメータ(θ 0 、θ 1 、θ 2 )の新しい値を並列に計算します。各反復の後に、新しい シータベクトル{θ0,θ1,θ2} は、より適合性の高い新しいLinearRegressionFunctionインスタンスを作成します。 リスト3 は、勾配降下アルゴリズムのJavaコードを示しています。回帰関数の各シータは、トレーニング データ、データ ラベル、学習率(α)を使用してトレーニングされます。関数の出力には、新しいthetaパラメータによって改善されたターゲット予測関数が使用されます。 train()メソッドが繰り返し呼び出され、新しいターゲット予測関数と前回計算された新しいthetaが入力されます。これらの呼び出しは、調整されたターゲット予測関数のコストが最小に達するまで繰り返されます。 リスト 3. Java での勾配降下アルゴリズムの例
コストが減少し続けていることを確認するために、各トレーニングステップの後にコスト関数J(θ)を実行します。予想される結果は、反復ごとにコストが減少することです。減少しない場合は、学習率パラメータ値が大きすぎて、アルゴリズムが最小値を超えていることを意味します。この場合、勾配降下アルゴリズムは失敗します。 このモデルが機能しない理由図8は、次の式を使用して計算された新しいθを示しています。 パラメータのターゲット予測関数。初期のシータベクトルは{ 1.0, 1.0 }です。左の列には50回の反復後の予測が表示され、中央の列には200回の反復後の予測が表示され、右の列には1000回の反復後の予測が表示されます。図に示すように、新しいターゲット予測関数の適合性がどんどん向上するにつれて、反復ごとにコストが減少します。 500 ~ 600回の反復後、θ パラメータはそれほど変化しなくなり、コストは安定した高値に達します。この時点では、ターゲット予測機能の精度は大幅に向上しなくなります。 図8. 反復ごとにコストが減少する 500 ~ 600回の反復後にコストが大幅に減少することはなくなりましたが、ターゲット予測関数は依然として最適ではないようです。機械学習では、学習アルゴリズムがデータの根本的な傾向を捉えられないことを意味するために、「アンダーフィッティング」という用語がよく使用されます。 実際の人生経験によれば、面積の広い物件の場合、1平方メートルあたりの予想価格は徐々に下がります。これに基づいて、トレーニング プロセスで使用されるモデル、つまりターゲット予測関数は実際のデータにうまく適合していないと結論付けることができます。 「アンダーフィッティング」は通常、モデルが単純すぎるために発生しますが、この場合は、単一の家のサイズの特徴のみを使用する単純なターゲット予測関数によって発生します。明らかに、このデータだけでは住宅費を正確に予測するには不十分です。 機能の追加と拡張ターゲット予測関数が解決しようとしている問題に適していないことが判明した場合、それを修正する一般的な方法は、特徴ベクトルにさらに特徴を追加して調整することです。たとえば、前の住宅価格の例では、部屋数や築年数などの住宅の特徴をさらに追加できます。同時に、単一のドメイン固有の特徴ベクトルである { サイズ } を使用する代わりに、 { サイズ、部屋数、年齢 } などの多値の特徴ベクトルを使用して家のインスタンスを記述することもできます。 もちろん、利用可能なトレーニング データセットに十分な機能がない場合もあります。次に、既存の特徴から計算された多項式特徴を追加してみることができます。たとえば、住宅価格目標予測関数を拡張して、計算された二乗サイズの特徴(x2)を含めることができます。 図9. 多項式特徴拡張を用いたターゲット予測関数 複数の特徴を使用する場合、さまざまな特徴の範囲を標準化するために、特徴を拡張 (または「正規化」) する必要があることに注意してください。たとえば、 size2フィーチャの値の範囲は、 sizeフィーチャの値の範囲よりも 1 桁大きくなります。機能が拡張されない場合、 size2機能がコスト関数全体を支配します。 size2機能によって発生するエラー値は、size 機能のみによって発生するエラー値よりもはるかに高くなります。下の図10は、単純な特徴拡張アルゴリズムを示しています。 図10. 単純な特徴拡張アルゴリズム このアルゴリズムは、次のJavaコード リストのFeaturesScalingクラスによって実装されます。 FeaturesScalingクラスは、トレーニング データに基づいて調整される拡張関数を作成するために使用できるファクトリ メソッドを提供します。内部的には、トレーニング データのインスタンスを使用して、平均、最小、最大定数を計算します。結果の関数は特徴ベクトルを受け取り、拡張された特徴を持つ新しい特徴ベクトルを生成します。下の図に示すように、トレーニング プロセスと予測呼び出しの両方で機能を拡張する必要があります。 機能が追加されるにつれて、ターゲット予測機能もより適合性が増していくことがわかるでしょう。ただし、追加する機能が多すぎると、最終的にはターゲット予測関数の過剰適合につながる可能性があることに注意してください。 オーバーフィッティングとクロスバリデーションオーバーフィッティングは、ターゲット予測関数またはモデルがトレーニング データに適合しすぎる場合に発生します。オーバーフィット モデルは、トレーニング データ内のノイズまたはランダムな変動をキャプチャします。図11の右端のグラフは、過剰適合の動作パターンを示しています。 図11. 過剰適合挙動を示すターゲット予測関数の例 オーバーフィット モデルはトレーニング データに非常によく適合する可能性がありますが、未知の、目に見えないデータを解決するように要求された場合、パフォーマンスは非常に低くなります。現在、過剰適合を回避する方法は 3 つあります。
予測モデルが過剰適合していると思われる場合は、精度に寄与しない機能を削除する必要があります。ここでの課題は、予測結果に最も貢献する特徴をどのように見つけるかということです。 上図に示すように、グラフを視覚化することでオーバーフィッティングを識別できます。このアプローチは 2D または 3D グラフを使用する場合にはうまく機能しますが、2 つ以上のドメイン固有の機能を使用する場合には非常に困難になります。したがって、過剰適合を検出するためにクロス検証がよく使用されます。 クロス検証では、学習プロセスが完了すると、未知の検証データセットを使用してトレーニング済みのモデルを評価します。一般的に、利用可能な注釈付きデータセットは次の 3 つの部分に分けられます。
上記の場合、サンプル住宅レコードの60% を使用して、ターゲット アルゴリズムのさまざまなバリアントをトレーニングできます。学習プロセスが完了すると、未公開のサンプル レコードの残りの半分を使用して、トレーニングされたターゲット アルゴリズムが未公開データを適切に処理できるかどうかが検証されます。 通常、最初に最も適切なターゲット アルゴリズムを選択します。処理されていないサンプル データの残りの半分は、最終的に選択されたモデルのエラー メトリックを計算するために使用されます。もちろん、この手法にはk分割交差検証など他のバリエーションもあります。ここでは詳細には触れません。 まとめ上記では、機械学習の関連概念の理解に基づいた教師あり学習の例を紹介し、勾配降下アルゴリズムを使用してターゲット予測関数をトレーニングしました。また、モデルのアンダーフィッティングの例と、機能を追加および拡張してそれを修正する方法についても説明しました。最後に、過剰適合の危険性とそれを修正する方法について簡単に説明します。 翻訳者紹介51CTO コミュニティの編集者である Julian Chen 氏は、IT プロジェクトの実装で 10 年以上の経験があります。社内外のリソースとリスクの管理に長けており、ネットワークと情報セキュリティの知識と経験の普及に重点を置いています。 原題: Java 開発者のための機械学習: 機械学習のアルゴリズム、著者: Gregor Roth および Matthew Tyson |
<<: AI分野におけるNVIDIA NeMoフレームワークの包括的な応用と利点の概要
最近、第7回ビジョンと学習セミナー(VALSE)が厦門大学で成功裏に終了しました。 VALSE は ...
今日の急速に変化するデジタル時代において、企業は効率を高め、運用コストを削減し、全体的な生産性を向上...
研究者らによると、人工知能はインターネットサービスプロバイダー(IPS)がDDoS攻撃に先手を打つの...
この熱光起電力セルは、太陽電池パネルに似ており、白熱熱源から高エネルギー光子を受動的に捕捉し、電気に...
[[426161]]ディープラーニングの研究は格闘技の競技のようなものですか?意外なことに、何でもや...
活性化関数(変換関数とも呼ばれる)は、ニューラル ネットワークを設計するための鍵となります。活性化関...
人工知能は組織内で大きな変化をもたらしますが、変化とともに、AI が仕事を奪ってしまうのではないかと...
[51CTO.com クイック翻訳]ビジネスの世界では、デジタルトランスフォーメーションという言葉を...
[[244225]]人工知能は現実的な科学技術の力であり、需要、デジタル経済、高品質の開発に焦点を当...
情報化時代において、人工知能は急速に社会の変化と発展を推進しています。世界中の研究機関、企業、大学が...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[311550]] [51CTO.com クイック翻訳] 人工知能は最新の開発トレンドであり、その...