各種メニューMenu

ブログ

人工知能の数学: ニューラルネットワークの学習問題

人工知能を支える数学は、理解するのが難しいものです。しかし、機械学習アルゴリズムを適切に適用するためには、 それらを理解することが不可欠です。また、結果の解釈にも、数学や統計学の理解が必要です。

この記事では、学習問題を関数解析と変分法の観点から説明します。

準備

まずはいくつか数学的な概念を定義します。

関数

関数とは、第1の集合の各要素を第2の集合のちょうど1つの要素に関連付ける、2つの集合間の二項関係のことです。

\[ y:X→Y \] \[ x↦y(x) \]

関数空間

関数空間とは,関数を要素とするノルム化されたベクトル空間のことである.例えば、以下のようなものがあります。 C 1 ( X , Y ) は、連続的に微分可能な関数の空間、または P 3 ( X , Y ) は,オーダー3のすべての多項式の空間である.

最適化問題

最適化問題とは、ある関数を最小化するベクトルを見つけることです。

\[ Find \ x^* ∈ X \ such \ that \ f(x) \ is \ minimum. \]

例えば、次の関数を見てみましょう。$f(x)=x^2$ この場合、最小値は $x=0$

汎関数

汎関数とは、あるクラスに属する各機能に番号を割り当てる対応関係のことです。 \[ F:V→R \] \[ y(x)↦F[y(x)] \]

変分

変分とは、ある関数を最小化する関数を見つけることです。 \[ Find \ x^* ∈ X \ such \ that \ f(x) \ is \ minimum. \] 例えば、2つの点AとBがあるとき、長さの関数を考えます。 関数は $y^*(x)$ のように、2点間の長さを最小にするものが直線である。

ニューラルネットワーク

ニューラルネットワークとは、生物学に基づいて開発された計算モデルで、人工的なニューロンで構成された ネットワークアーキテクチャで構成されています。ニューラルネットワークは、近似、分類、予測などの問題を解決するために使用されます。 4つの入力と2つの出力を持つニューラルネットワークを示した図です。

学習問題

学習問題は、ある関数が極値をとるようにする関数を見つけることで表現されます。 この関数(損失関数)は、ニューラルネットワークに要求されるタスクを定義し、 ネットワークが学習する必要のある表現の品質を測る指標となります。適切な損失関数の選択は、 特定のアプリケーションに依存します。

ここでは、アクティビティ・ダイアグラムを紹介します。 それぞれの手順をひとつずつ説明していきます。

2.1. ニューラルネットワーク

ニューラルネットワークは関数空間に広がっていて、これを $V$ とする. これは、ニューラルネットワークが生み出すことのできるすべての関数の空間です。 \[ y:X⊂R^n→Y⊂R^m \] \[ x↦y(x;θ) \] この構造体には一連のパラメータが含まれており、これを調整することで特定のタスクを実行することができます。 各機能は、自由パラメータ$θ$のベクトルに依存します。$V$の次元は,ニューラルネットワークのパラメータの数である.

例えば、ここではニューラルネットワークを使用しています。双曲接線活性化関数を持つ隠れ層と、線形活性化関数を持つ出力層があります。 関数空間の次元は、このニューラルネットワークのパラメータの数である7です。 関数空間の要素は次のような形になっています。 \[ y(x;θ)=b^{(2)}_1+w^{(2)}_{1,1}tanh(b^{(1)}_1+w^{(1)}_{1,1}x)+w^{(2)}_{2,1}tanh(b^{(1)}_2+w^{(1)}_{1,2}x) \] ここでは、関数空間の要素の異なる例があります。 どちらも構造は同じですが、パラメータの値が異なります。

2.2 損失関数

損失関数は、ニューラルネットワークのタスクを定義し、品質の尺度を提供する関数です。 関数の選択は、ニューラルネットワークの用途によって異なります。例えば、平均二乗誤差やクロスエントロピー誤差などがあります。 いずれの場合も,$k$点($x_i$,$y_i$)からなるデータセツトがあり,それらに適合する$y(x,θ)$を探しています。

  • 平均二乗誤差:$E[y(x;0)]=\frac1k\sum_{i=1}^k(y(x_i;θ)-y_i)^2$
  • 交差エントロピー誤差:$E[y(x;θ)]=-\frac1k\sum_{i=1}^ky(x_i;θ)log(y_i)$
ニューラルネットワークの学習課題である「変分問題」を定式化します。関数$F[y(x;θ)]$が最小値を与える関数$y^*(x;θ^*)∈V$を探します。 一般的には、直接法で解を近似します。変分問題の例を見てみましょう。先ほどのニューラルネットワークの関数空間を考えます。 平均二乗誤差の関数 $MSE$ が最小になるような要素 $y*(x;θ)$ を求めます。連なる点があり,それらに適合する関数を探しています。 とりあえずランダムな関数$y(x;θ)=-x$をとりましたが、関数$MSE[y(x;θ)]=1.226$はまだ最小化されていません。 次に、この問題を解決する方法を検討します。

2.3. 最適化アルゴリズム

目的関数は$F$は、目的関数$f$を関連付けています。 \[f:Θ⊂R^d→R\] \[θ↦f(θ)\] 変分問題は、関数最適化問題に還元されます。目的は、$f(θ)$が最小値になるような自由パラメータ$θ^*∈Θ$のベクトルを 見つけることです。これにより、目的関数は最小になります。

最適化アルゴリズムは、縮小された関数の最適化問題を解きます。最適化処理には、準ニュートン法や勾配降下法など、さまざまな手法があります。

先ほどの例の続きを見てみましょう。同じ点のセットがあり、それに適合する関数を探しています。 この問題は、関数の最適化に還元されています。これは、平均二乗誤差関数を最小化するベクトル$θ^*$を見つけることで解決します。 これには最適化アルゴリズムを用います。 このベクトル$θ^*=(−1.16,−1.72,0.03,2.14,−1.67,−1.72,1.24)$、$mse(θ^*)=0.007$を求めた後、 関数を最小化する関数$y^*(x;θ^*)=−1.16−1.72tanh(0.03+2.14x)−1.67tanh(−1.72+1.24x)$を求めます。これがこの問題の解答です。

まとめ

ここまで、ニューラルネットワークを変分法の観点から説明してきました。 ニューラルネットワークは、パラメータ化された関数空間に広がっています。この空間で、変分問題を立てます。 この問題を解くためには、関数を最小化しなければなりません。そのためには、関数の最適化問題に落とし込みます。 これを最適化アルゴリズムで解くと、求めていた関数が得られます。

動画

このビデオを見て、ニューラルネットワークの学習問題について理解を深めてください。