[AI数理]徹底的に交差エントロピー(2)

[AI数理]徹底的に交差エントロピー(2)

おはようございます!(株) Qualiteg 研究部です。

早速、前回の続きをやっていきましょう!

2章 分類問題は「確率」の予測として解釈する

Deep Learning やロジスティック回帰などで解きたい 分類問題 では、入力データがどのクラスに分類されるのかを予測します。

まず入力データが 何かに 分類される とはどういうことなのかを考えてみます。

たとえば、ある動物の画像を入力データとしたとき、その画像がイヌ、キツネ、オオカミ の3つのうちどれなのかを予測する 分類器 を考えます。

(分類器 は 入力と処理と出力があり、入力は画像データで、処理として ニューラルネットワーク や ロジスティック回帰 などの 計算処理 をおこない、分類結果を出力するプログラムコードと考えます)

この 分類器 にたとえば 「イヌ」の画像を入力し、分類させた結果は 「イヌ」 とダイレクトに判定されるわけではありません。

ではどのように 分類するか というと、以下のように「イヌ」である確率 0.8、「キツネ」である確率は 0.1 、「オオカミ」である確率は 0.1 のように、確率値の予測という形をとります。

このように 分類問題が確率値の予測 であることをまず念頭において、これから交差エントロピーをみていきます。

3章 サイコロの出目(でめ)と尤度関数

さて、さきほど 分類問題は確率値の予測 とかいたとおり、ここからは、確率の考え方をつかって交差エントロピーを導き出していきたいとおもいます。

ここにサイコロがあります。

ただのサイコロではなく、どうも何か特別な細工がされているサイコロです。

つまりイカサマサイコロなので、出る目に偏りがあるという設定です。

3-1. 事象

ここで、サイコロ振ったときに起こる 事象 について考えます。事象というのは 起こった事柄 です。サイコロを振ったときに起こる事象というのは、つまるところ、 何かの目がでる ということになります。

サイコロなので、サイコロを振ったときに起こりうる事象は以下の6つになります。

以降、この 6 つの事象に番号をつけて 「事象 \(_1\) 」、「事象 \(_2\) 」、「事象 \(_3\) 」のように呼ぶことにします。

3-2. ある目がでる確率

ここからは、実際にサイコロを投げて、出目を集計して「どの目が、どのくらいの確率で出るか 」を推定する方法を考えていきたいと思います。

公正なサイコロなら、どの目も \(\frac{1}{6}\) の確率で出ますが、前述のとおり、今回の設定は 細工されたイカサマサイコロなので、どの目がどのくらいの確率で出るのかは事前には予測できない設定です

ということで、知りたいのは、このサイコロの各目(め)がでる確率なので、以下のように表に 事象が起こる確率 を追加します。

1の目が出る確率は \(y1\) 、2の目が出る確率は \(y2\) といった具合に変数 \(y1\) ~ \(y6\) として設定しました。

サイコロを投げると \(1\) ~ \(6\) のどれかの目がでるので、 事象が起こる確率 = 何らかの目がでる確率 の合計値は当然 \(1\) になります。

$$
y_{1} + y_{2} + y_{3} + y_{4} + y_{5} + y_{6} = 1 \tag{3.1}
$$

\(\sum\) をつかって書き直す以下のようになりますね。

$$
L = \sum_{i=1}^{6} y_i = 1 \tag{3.2}
$$

3-3. 実際にサイコロを投げる

さて、サイコロを投げて、出た目がどうなるか見ていきます

このサイコロを20回投げた結果が以下のようになっていたとします。

(ぱっと見、どうも偶数の目が多く出やすいサイコロのようです)

20回投げた結果、1の目が2回、2の目が5回 というように、各事象がどのくらいの頻度で発生したかどうかがわかったので、さきほどの表に 事象が起こる頻度 という列を加え以下のようにしました。

3-4. 尤度(ゆうど)関数

さて、今まで整理した結果をつかって確率を計算していきます。

さきほどの表で 事象が起こる頻度 を \(t\) という変数におきかえて、事象番号の添え字 を付与して \(t_{1}\) ~ \(t_{6}\) であらわすと以下のようになります。

サイコロを20回投げて上の表のようになる確率はどうなるでしょう?

サイコロを投げるという試行は独立(2投目の結果は1投目の影響を受けない)なので、1の目が2回、2の目が5回、3の目が2回、4の目が4回、5の目が2回、6の目が5回出たのでその確率を計算すると

$$
y_{1} \times y_{1} \times y_{2} \times y_{2} \times y_{2} \times y_{2} \times y_{2} \times y_{3} \times y_{3} \times y_{4} \times y_{4} \times y_{4} \times y_{4} \times y_{5} \times y_{5} \times y_{6} \times y_{6} \times y_{6} \times y_{6} \times y_{6}
$$

となります。

これを事象が起こる頻度を \(t_{1}\) ~ \(t_{6}\) を指数として使ってべき乗表記に書き直すと

$$
y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}} \cdot y_{4}^{t_{4}} \cdot y_{5}^{t_{5}} \cdot y_{6}^{t_{6}}
$$

となります。
(ついでに \(\times\) も \(\cdot\) に置き換えました)

この サイコロを投げた時の 事象 \(1\) ~ 事象 \(6\) が起こる確率 \(y_{1}\) ~ \(y_{6}\) を式に含む \(y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}} \cdot y_{4}^{t_{4}} \cdot y_{5}^{t_{5}} \cdot y_{6}^{t_{6}}\) を尤度(ゆうど)関数(または単に尤度)と呼びます。

「尤度」は英語の likelihood に相当する単語なので、 \(L\) をつかって 尤度関数は以下のようになります

$$
L = y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}} \cdot y_{4}^{t_{4}} \cdot y_{5}^{t_{5}} \cdot y_{6}^{t_{6}} \tag{3.3}
$$

\(y\) の添え字となっている事象番号を \(i\) であらわし、積を 総乗の記号 \(\prod\) であらわすと、以下のようになります

(\(\prod\) は \(\sum\) のかけ算版です)

$$
L = \prod_{k=1}^{6} y_k^{t_{k}} \tag{3.4}
$$

ここでお題をもう一度思い出します。

「今回のイカサマサイコロは出目に偏りがあるので、どの目が、どのくらいの確率で出るか を推定する方法」を考えたい ということでした。

この方法の1つに 最尤推定 (最尤法)  があります。

最尤推定の問題設定は 「今回の20回の試行の結果をよく説明する良さげな \(y_{1}\) ~ \(y_{6}\) は何か」 となります。

これを言い換えると、
「 \(y_{1}\) ~ \(y_{6}\) の値が何ならば、今回の20回の試行の結果のようになるか」 となります。

これはつまり、さきほどの尤度関数 \(L\) を最大にするような 確からしいパラメータ \({y_{1}}\) , \({y_{2}}\) , \({y_{3}}\) , \({y_{4}}\) , \({y_{5}}\) , \({y_{6}}\) を求めることになります。

3-5. 最尤推定

これまでの流れで、「尤度関数 \(L\) を最大にするパラメータ \({y_{1}}\) , \({y_{2}}\) , \({y_{3}}\) , \({y_{4}}\) , \({y_{5}}\) , \({y_{6}}\)  を求める」、という問題設定となりましたが、尤度関数 \(L\) を最大化するにはどうしたらよいでしょうか。

ある関数の最大値を求める方法として、その関数を微分し、その値が \(0\) となる場所を求める方法があります。

ある関数を微分すると微分した後の関数(=導関数)は元の関数の接線の傾きをあらわしますので、その傾きが \(0\) となるような点が元の関数が最大値をとる場所となります。

(より正確にいうと、接線の傾きが \(0\) になる点は元の関数の極大値または極小値をとることになりますが尤度関数の2階微分(2次微分ともいう。関数を2回微分すること)を調べることで傾きが \(0\) になる点=極大になる、ことを補足で説明します)

このように、尤度関数 \(L\) を最大にするパラメータ(=最尤推定値)を求めることを 最尤推定(最尤法) とよびます。

3-6. 対数尤度関数

尤度関数の最大値を求めるには、その微分値が \(0\) となる点を求めることですので、尤度関数 \(L\) を微分したいとおもいますが、尤度関数は以下の通り かけ算 の形式となっており、このままだと微分がやりづらいという問題と、後からコンピュータで計算するときに、確率値( \(0\) ~ \(1\) )の積算をえんえんとやることになるため、その計算値が極めて小さくなりコンピュータの数値演算精度を考えると問題になる可能性があります。

そこで、尤度関数 \(L\) に以下のように 対数 をとった、 対数尤度関数 \(log L\) を考えます。

対数 \(log\) をとると、 かけ算を足し算 にする効果があるので、微分や計算がやりやすくなります。

さっき \(\prod\) を使って書いた 尤度関数 \(L\) をもう1度、展開し、

$$
\begin{aligned}
L &= \prod_{k=1}^{6} y_k^{t_{k}}& \
&= y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}} \cdot y_{4}^{t_{4}} \cdot y_{5}^{t_{5}} \cdot y_{6}^{t_{6}}&
\end{aligned}
$$

以下のように尤度関数に対数をとった \(log L\) のカタチにします。
尤度関数に対数をとってるので 対数尤度関数 と呼びます。

$$
\log L = \log (y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}} \cdot y_{4}^{t_{4}} \cdot y_{5}^{t_{5}} \cdot y_{6}^{t_{6}}) \tag{3.5}
$$

対数の公式

ここで、ちょっと対数の公式を思い出しておきましょう

対数の公式①

$$
\log ab = \log a + \log b
$$

対数の公式②

$$
\log a^{b} = b \log a
$$

対数の公式を思い出したところで、式 (\(3.5\)) を変形していきます

$$
\begin{aligned}
\log L =&\log (y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}} \cdot y_{4}^{t_{4}} \cdot y_{5}^{t_{5}} \cdot y_{6}^{t_{6}})& \
\
&対数の公式①より、 \log のかけ算をたし算に変形&\\
=&\log y_{1}^{t_{1}} + \log y_{2}^{t_{2}} + \log y_{3}^{t_{3}} + \log y_{4}^{t_{4}} + \log y_{5}^{t_{5}} + \log y_{6}^{t_{6}}&\
\\
&対数の公式②より、肩にある指数をおろす&\\
=&t_{1} \log y_{1} + t_{2} \log y_{2} + t_{3} \log y_{3} + t_{4} \log y_{4} + t_{5} \log y_{5} + t_{6} \log y_{6} &\
\
\end{aligned}
$$

対数をとることにより、このように取り扱いやすいカタチとなりました。

$$
\begin{aligned}
\log L=&t_{1} \log y_{1} + t_{2} \log y_{2} + t_{3} \log y_{3} + t_{4} \log y_{4} + t_{5} \log y_{5} + t_{6} \log y_{6} &
\end{aligned}
$$

さらに、添え字 \(1\) ~ \(6\) を \(k\) に置き換えて \(\sum\) であらわすと、以下のようになります。

$$
\log L=\sum_{k=1}^{6} t_{k} \log y_{k} \tag{3.6}
$$

ここまでで、サイコロを20回投げた出目の対数尤度関数は以下のようになりました

ところで、20回なげた20回という試行回数はどこに行ってしまったんだということになりますが、これは 頻度 \(t_{k}\) の合計値、すなわち \(\sum_{k=1}^{6}t_{k}\) に反映されています。

$$
\sum_{k=1}^{6}t_{k} = 20
$$

まとめ

いかがだったでしょうか。

今回は、分類問題を確率の視点から捉えるという考え方を基に、サイコロの出目を推定するという具体的な確率問題について学んでいきました。普通のサイコロではすべての目が等しい確率で出ますが、今回は特殊な例として、ある目が出やすいように偏りがあるサイコロを使ってみました。

このような偏ったサイコロを振ったときに、どの目がどれくらいの頻度で出るかを、変数を用いて表す「尤度関数」を作成し、これをを用いて、各目が出る確率をどのように推定するかを考えるために、「最尤推定」という手法をご紹介しました。

さらに、この推定方法をもっと扱いやすくするために、尤度関数に対数を取った「対数尤度関数」を導入し、数学的に(そしてコンピュータに計算しやすい)シンプルで分かりやすい形にする工夫をしました。

このプロセスを通じて、偏りのあるサイコロの振り方から、実際にどのように確率を計算するかの具体的な手順を見てきました。

次回は、尤度関数から交差エントロピーを導いていってみたいとおもいます。

それでは、また次回お会いしましょう!


参考文献
https://blog.qualiteg.com/books/


navigation

Read more

ディープラーニングにおけるEMA(Exponential Moving Average)

ディープラーニングにおけるEMA(Exponential Moving Average)

こんにちは! 本日は、画像生成、動画生成モデルなどで重要な役割を果たしている EMA ※について解説してみたいとおもいます! 当社のAIアバター動画生成サービス「MotionVox™」でも役立っています! といっても、画像生成のための専用技術というわけではなく、学習と推論(生成系も含む)というディープラーニングの運用の中で昨今かなり重宝されるテクニックとなっておりますので、基礎から実装までみていきたいとおもいます。 ※EMAの読み方は私はエマと呼んでますが、イーエムエーって言ってる人もいます。どっちでもいいでしょう。 EMA の基礎知識 EMA(Exponential Moving Average=指数移動平均)は、ざっくりいえばモデルの重みを平均化する手法です。 実は株価分析などでも使われている古くからある概念なのですが、ディープラーニングでは比較的最近になって「あ、これ結構使えるんじゃね?」と重要性が認識されるようになりました。 (”EMA”に限らず、理論の積み上げではなく「やってみたら、使えんじゃん」っていうのがかなり多いのがディープラーニング界隈のもはや常識でし

By Qualiteg 研究部
TOKYO DIGICONX 「MotionVox™」出展レポート

TOKYO DIGICONX 「MotionVox™」出展レポート

こんにちは! 2025年1月9日~11日に東京ビッグサイトにて開催された TOKYO DIGICONX に出展してまいりました。 開催中3日間の様子を簡単にレポートいたします! TOKYO DIGICONX TOKYO DIGICONX は東京ビッグサイト南3・4ホールにて開催で、正式名称は『TOKYO XR・メタバース&コンテンツ ビジネスワールド』ということで、xR・メタバース・コンテンツ・AIと先端テクノロジーが集まる展示会です 「Motion Vox™」のお披露目を行いました 当社からは、新サービス「Motion Vox™」を中心とした展示をさせていただきました MotionVox™は動画内の顔と声を簡単にAIアバター動画に変換できるAIアバター動画生成サービスです。 自分で撮影した動画をアップロードし、変換したい顔と声を選ぶだけの3ステップで完了。特別な機材は不要で、自然な表情とリップシンクを実現。 社内研修やYouTube配信、ドキュメンタリー制作など、幅広い用途で活用できます。 当社ブースの様子 「MotionVox™」の初出展とい

By Qualiteg ビジネス開発本部 | マーケティング部
【本日開催】TOKYO DIGICONX で「MotionVox」を出展~リアルを纏う、AIアバター~

【本日開催】TOKYO DIGICONX で「MotionVox」を出展~リアルを纏う、AIアバター~

こんにちは! 本日(2025年1月9日)より東京ビックサイトにて開催されている「TOKYO DIGICONX」に、フォトリアリスティック(Photorealistic Avater)な次世代アバター生成AI「MotionVox」を出展しています! XR・メタバース・AIと先端テクノロジーが集まる本展示会で、ビジネス向け次世代AI動画生成ツールとしてMotionVox™をご紹介させていただきます。 MotionVox™とは MotionVox™は、あなたの表情や発話を魅力的なアバターが完全再現する動画生成AIです。まるで本物の人間がそこにいるかのような自然な表情と圧倒的な存在感で、新しい表現の可能性を切り開きます。 主な特徴 * フォトリアリスティックな高品質アバター * 高再現度の表情同期 * プロフェッショナルなリップシンク * カスタマイズ可能なボイスチェンジ機能 * 簡単な操作性 * プライバシーの完全保護 多様な用途に対応 MotionVoxは、以下のようなさまざまなビジネスシーンで活用いただけます! * 動画配信やVTuber活動 * S

By Qualiteg ビジネス開発本部 | マーケティング部
[AI新規事業創出]Qualitegセレクション:ビジネスモデル設計①ビジネスモデル図

[AI新規事業創出]Qualitegセレクション:ビジネスモデル設計①ビジネスモデル図

Qualiteg blogを訪問してくださった皆様、こんにちは。Micheleです。AIを活用した新規事業やマーケティングを手がけている私には、クライアントからよく寄せられる質問があります。AIを用いた事業展開を検討されている方々が共通して直面するであろう課題に対して、このブログを通じて私なりの解答をご提供したいと思います。 「新規事業のビジネスモデル図の描き方 〜実践で活かせる具体的なコツ〜」 新規事業開発のコンサルティングをさせていただいておりますとクライアント企業様の現場で、「ビジネスモデル図をどう描けばいいの?」という質問をよく頂きます。 実は私も最初は悩んだのですが、数々の失敗と成功を経て、効果的なビジネスモデル図の描き方が分かってきました。今回は、その実践的なコツをお伝えしていきます。 なぜビジネスモデル図が重要なのか ビジネスモデル図は、単なる図解ではありません。これは、自分のビジネスアイデアを「検証可能な形」に落とし込むための重要なツールです。 上申の際にステークホルダーの説明をするのに使うこともできます。また、アイディア創出後のマネタイズ検討の場合も情報

By Join us, Michele on Qualiteg's adventure to innovation