26 ニューラル・ネットワーク
回帰および分類の機械学習手法のニューラル・ネットワーク・アルゴリズムについて学習します。
- ニューラル・ネットワークとは
Oracle Machine Learningでのニューラル・ネットワークは、生物学的なニューラル・ネットワークからヒントを得ており、分類や回帰などの複雑なタスク向けに設計されています。 - ニューラル・ネットワーク用のデータ準備
ニューラル・ネットワーク・アルゴリズムでは、量的データが正規化され、質的データが2項属性に変換され、欠損値が自動的に処理されます。 - ニューラル・ネットワーク・アルゴリズムの構成
レイヤーごとのノード数と活性化関数を指定することでニューラル・ネットワーク・アルゴリズムを構成してパフォーマンスを最適化します。 - ニューラル・ネットワークを使用したスコアリング
回帰および分類の標準のスコアリング関数を使用してニューラル・ネットワークでデータをスコアリングします。
関連項目
親トピック: アルゴリズム
26.1 ニューラル・ネットワークとは
Oracle Machine Learningでのニューラル・ネットワークは、生物学的なニューラル・ネットワークからヒントを得ており、分類や回帰などの複雑なタスク向けに設計されています。
機械学習では、ニューラル・ネットワークは生物学的なニューラル・ネットワークからヒントを得た人工アルゴリズムであり、多数の一般的な未知入力に依存する関数を推定または近似するために使用されます。人工ニューラル・ネットワークは、相互に接続された多数のニューロンで構成され、これらのニューロンは、特定の問題を解決するために相互にメッセージを交換します。これらは例によって学習し、学習過程の間にニューロン間の接続の重みを調整します。ニューラル・ネットワーク・アルゴリズムでは、コンピュータ・ビジョン、音声認識、およびビジネス上の複雑な各種問題など、様々なタスクを解決できます。
- ニューロンと活性化関数
ニューロンでは、シグモイドや正規化線形ユニット(ReLU)などの加重合計と活性化関数によって入力が処理されます。 - 損失関数またはコスト関数
損失関数またはコスト関数は、1つのイベントまたは1つ以上の変数の値を、そのイベントに関連付けられたいくつかの"コスト"を直感的に表す実数にマッピングする関数です。 - 順伝播と逆伝播
順伝播で損失値が計算され、逆伝播で重みが更新されて、損失関数が最小化されます。 - 最適化ソルバー
最適化ソルバーは、損失関数の最適解を探し、損失(コスト)関数の極値(最高か最低)を求めるための機能です。ニューラル・ネットワークでは、効率的かつ効果的な最適化のためにL-BFGSおよびAdamソルバーが使用されます。 - 正則化
L1ノルム、L2ノルム、保持などの正則化技法により、過剰適合を防ぎ、モデルの一般化を改善します。 - 収束判定
収束判定により、最適化プロセスが最適解に到達するようにします。これは、パフォーマンス基準が満たされると停止します。 - LBFGS_SCALE_HESSIAN
LBFGS_SCALE_HESSIAN
設定により、初期の逆ヘッセ行列の近似を調整することで最適化が改善されます。 - NNET_HELDASIDE_MAX_FAIL
NNET_HELDASIDE_MAX_FAIL
設定では、検証データ(保持)が使用されて、一定数のエポックの後にネットワーク・パフォーマンスの向上に失敗するとトレーニングが停止されます。
親トピック: ニューラル・ネットワーク
26.1.1 ニューロンと活性化関数
ニューロンでは、シグモイドや正規化線形ユニット(ReLU)などの加重合計と活性化関数によって入力が処理されます。
ニューロンは、様々な重みを持つ入力値を1つ以上取得し、その入力値に依存する出力値を持ちます。出力は、各ニューロンの入力値に重みを付けて加算し、その和を活性化関数に供給することで実現されます。
通常はシグモイド関数が活性化関数の最も一般的な選択肢ですが、区分線形関数やステップ関数などの他の非線形関数も使用されます。正規化線形ユニット関数NNET_ACTIVATIONS_RELU
は、大きなニューラル・ネットワークでの勾配消失問題に対応する、一般的に使用される活性化関数です。
活性化関数の例を次に示します。
-
ロジスティック・シグモイド関数
-
線形関数
-
tanh関数
-
逆正接関数
-
バイポーラ・シグモイド関数
-
正規化線形ユニット
親トピック: ニューラル・ネットワークとは
26.1.2 損失関数またはコスト関数
損失関数またはコスト関数は、1つのイベントまたは1つ以上の変数の値を、そのイベントに関連付けられたいくつかの「コスト」を直感的に表す実数にマッピングする関数です。
最適化問題では、損失関数を最小化することを目指します。損失関数の形式は、問題の性質と数学的な必要性に基づいて選択されます。
様々なシナリオにおける損失関数の違いは次のとおりです。
-
2項分類: クロス・エントロピ関数。
-
マルチクラス分類: マルチ・クロス・エントロピ損失関数。
-
回帰: 2乗誤差関数。
親トピック: ニューラル・ネットワークとは
26.1.3 順伝播と逆伝播
順伝播で損失値が計算され、逆伝播で重みが更新されて、損失関数が最小化されます。
順伝播は、前の層のニューロン値を加重加算し、活性化関数を適用することによって、損失関数の値を計算します。逆伝播は、ネットワーク内のすべての重みに関する損失関数の勾配を計算します。重みは、ユーザーによって(重みの境界を設定することで)指定された領域内、または隣接する層内のノード数によって定義される(データ駆動の)領域内で均一に分布する乱数の集合で初期化されます。勾配は最適化手法に提供され、損失関数を最小化するために重みを更新するために使用されます。
親トピック: ニューラル・ネットワークとは
26.1.4 最適化ソルバー
最適化ソルバーは、損失関数の最適解を検索し、損失(コスト)関数の極値(最高か最低)を求めるための機能です。ニューラル・ネットワークでは、効率的かつ効果的な最適化のためにL-BFGSおよびAdamソルバーが使用されます。
Oracle Machine Learningには、記憶制限ブロイデン・フレッチャー・ゴールドファーブ・シャンノ(L-BFGS)が直線探索およびAdamソルバーとともに実装されています。
記憶制限ブロイデン・フレッチャー・ゴールドファーブ・シャンノ・ソルバー
L-BFGSは準ニュートン法です。この手法では、勾配評価によって指定されたランク1の更新を使用してヘッセ行列を近似します。この手法は、限られた量のメモリーしか必要としません。L-BFGSは降下方向を検索するために使用され、直線探索は適切なステップ・サイズを見つけるために使用されます。L-BFGSソルバーに保持されている過去のコピーの数は、LBFGS_HISTORY_DEPTH
ソルバー設定によって定義されます。反復回数が過去の深度よりも少ない場合、L-BFGSによって計算されたヘッセ行列は正確です。反復回数が過去の深度よりも多い場合、L-BFGSによって計算されたヘッセ行列は近似値です。そのため、計算速度が遅くなりすぎないようにするために、過去の深度を小さすぎる値や大きすぎる値にはしないでください。通常、この値は3
から10
の間です。
Adamソルバー
Adamは、ミニバッチ最適化を使用する確率的勾配降下の拡張機能です。L-BFGSソルバーはより安定性の高いソルバーですが、Adamソルバーでは、確認するデータがより少なくなることで進行速度が向上する可能性があります。Adamは、メモリー要件が少なく、計算効率が高いため、データまたはパラメータ(あるいはその両方)の観点から大きな問題に特に適しています。
親トピック: ニューラル・ネットワークとは
26.1.5 正則化
L1ノルム、L2ノルム、保持などの正則化技法により、過剰適合を防ぎ、モデルの一般化を改善します。
正規化とは、不良設定問題を解決するため、または過剰適合を防止するための追加情報を導入するプロセスのことです。不良設定または過剰適合は、統計モデルで、基礎となる関係のかわりにランダムな誤差やノイズが記述される場合に発生する可能性があります。一般的な正則化技法には、L1ノルム正則化、L2ノルム正則化、保持などがあります。
保持正則化は通常は大規模なトレーニング・データセットに使用され、L1ノルム正則化とL2ノルム正則化は、主に小規模なトレーニング・データセットに使用されます。
親トピック: ニューラル・ネットワークとは
26.1.6 収束判定
収束判定により、最適化プロセスが最適解に到達するようにします。これは、パフォーマンス基準が満たされると停止します。
L-BFGSソルバーでは、収束基準に最大反復数、勾配の無限ノルム、および相対誤差の許容範囲が含まれます。保持正則化の場合、収束基準は、テスト・データセットの損失関数の値に加えて、これまでに学習された最良のモデルを検査します。特定の回数の反復(NNET_HELDASIDE_MAX_FAIL
で指定)に対してモデルが悪化したり、損失関数がゼロに近くなったり、テストデータの相対誤差が許容範囲よりも小さくなると、トレーニングは終了します。
親トピック: ニューラル・ネットワークとは
26.1.7 LBFGS_SCALE_HESSIAN
LBFGS_SCALE_HESSIAN
設定により、初期の逆ヘッセ行列の近似を調整することで最適化が改善されます。
この設定により、各反復の開始時に逆ヘッセ行列の初期近似が調整されます。値がLBFGS_SCALE_HESSIAN_ENABLE
である場合は、Oren-Luenbergerスケーリングで初期の逆ヘッセ行列が近似されます。LBFGS_SCALE_HESSIAN_DISABLE
である場合は、各反復の開始時に逆ヘッセ行列の初期近似値としてIDが使用されます。
26.2 ニューラル・ネットワーク用のデータの準備
ニューラル・ネットワーク・アルゴリズムでは、量的データが正規化され、質的データが2項属性に変換され、欠損値が自動的に処理されます。
このアルゴリズムでは、質的データはカテゴリ値ごとに2項属性のセットとして自動的に展開されます。Oracle Machine Learningのアルゴリズムでは、欠損値が自動的に処理されるため、欠損値処理は必要ありません。
質的データの欠損値は最頻値に、量的データの欠損値は平均値に自動的に置換されます。このアルゴリズムでは、数値入力の正規化が必要であり、それにはz-スコア正規化が使用されます。正規化は、(ネストされていない)2次元数値列に対してのみ行われます。正規化によって、量的属性の値が同じスケール上に配置され、元の大規模なスケールを持つ属性によってソリューションに偏りがでることが回避されます。ニューラル・ネットワークは、ネストされた列の数値を、対応する列の最大絶対値でスケーリングします。
関連項目
親トピック: ニューラル・ネットワーク
26.3 ニューラル・ネットワーク・アルゴリズムの構成
レイヤーごとのノード数と活性化関数を指定することでニューラル・ネットワーク・アルゴリズムを構成してパフォーマンスを最適化します。
レイヤーごとのノード数の指定
INSERT INTO SETTINGS_TABLE (setting_name, setting_value) VALUES
('NNET_NODES_PER_LAYER', '2,3');
レイヤーごとの活性化関数の指定
NNET_ACTIVATIONS
設定は、活性化関数または非表示レイヤーを指定します。
関連項目:
使用可能なモデル設定のリストおよび説明は、DBMS_DATA_MINING - アルゴリズムの設定: ニューラル・ネットワークを参照してください。ノート:
モデル設定と同じ意味でハイパーパラメータという用語も使用されます。親トピック: ニューラル・ネットワーク
26.4 ニューラル・ネットワークを使用したスコアリング
回帰および分類の標準のスコアリング関数を使用してニューラル・ネットワークでデータをスコアリングします。
ニューラル・ネットワークによるスコアリングは、他の分類アルゴリズムまたは回帰アルゴリズムと同じです。次の関数がサポートされています: PREDICTION
、PREDICTION_PROBABILITY
、PREDICTION_COST
PREDICTION_SET
、PREDICTION_DETAILS
。
親トピック: ニューラル・ネットワーク