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

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

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

今回は、多値分類用の交差エントロピーを計算していきたいと思います!


5章 多値分類用 交差エントロピーの計算 (データ1件対応版)

まず 交差エントロピー関数(標本データ1件ぶんバージョン) を再掲します。

$$
\ - \log L=\sum_{k=1}^{K} t_{k} \log y_{k} \tag{4.3、再掲}
$$

$$
t_{k} :頻度, y_{k}:確率
$$

式 \((4.3)\) の 交差エントロピー は 1件の標本データ に \(K\) 個の事象(が起こったか、起こらなかったか)が含まれていました。

サイコロでいえば、1回試行したときに \(K=6\) 通りの目の出方があるということです。それぞれの変数は \(y_{k} :\) 確率、 \(t_{k} :\) 頻度, となりました。

さて、これまでの過程をふまえて、
ここからは、確率 の頭から 分類問題 の頭に切り替えていきたいと思います。

さて、ここで以下のようなニューラルネットワークのモデルを考えます。(モデルの詳細は重要ではないです)

このモデルは画像データを入力すると、その画像が「イヌ」である確率、「キツネ」である確率、「オオカミ」である確率をそれぞれ予測します。

そして、このモデルはまだ何も学習していない状態だとします。

この状態で、とりあえず「イヌ」の画像を入れてみたら、以下のようになりました。

何も学習していない状態なので、このモデルが計算した予測値も正解には遠いですが、「イヌ」に相当する予測値 \(y_{1}\) は \(0.33\)、「キツネ」に相当する予測値 \(y_{2}\) は \(0.32\)、「オオカミ」に相当する予測値 \(y_{3}\) は \(0.35\) となりました。

さて、ここから、このモデルが計算した予測値が正解である確率 \(L\) を考えてみると、この例では、「イヌ」が正解で「キツネ」と「オオカミ」は不正解であることがあらかじめわかっているので、

$$
\begin{aligned}
L = &y_{1}^{1} \cdot y_{2}^{0} \cdot y_{3}^{0}&
\
=&0.33^{1} \times 0.32^{0} \times 0.35^{0}&\
=&0.33&
\end{aligned}
$$

と計算することができます。
(\(0.33\) なので、まだダメなモデルですが、計算上はこうなります。)

このように「イヌ」は正解なので \(1\) 、「キツネ」と「オオカミ」は不正解なので \(0\) とすると、正解、不正解は 正解ラベル \(t_{k}\) 列として以下のように整理できます。

そこで、確率 \(L\) を \(y_{k}\) と \(t_{k}\) であらわすと、

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

となります。これはサイコロの例でいう 1回の試行あたりの尤度 と同じ式になりますので、ここでもこの計算で導かれた確率を 尤度 と考えましょう。

さらにサイコロの例と同様に、さらに確率 \(L\) に対数をとって 対数尤度 の式を整理すると

$$
\begin{aligned}
\log L =&\log (y_{1}^{t_{1}} \cdot y_{2}^{t_{2}} \cdot y_{3}^{t_{3}}) & \
\
&対数の公式① 「\log ab = \log a + \log b」 より&\\
=&\log y_{1}^{t_{1}} + \log y_{2}^{t_{2}} + \log y_{3}^{t_{3}}&\
\\
&対数の公式② 「\log a^{b} = b \log a」 より&\\
=&t_{1} \log y_{1} + t_{2} \log y_{2} + t_{3} \log y_{3}&\
\
=&\sum_{k=1}^{3} t_{k} \log y_{k}&\
\
&t_{k}:正解ラベル、y_{k}:予測値&
\end{aligned}
$$

となります。

今回は 「イヌ」「キツネ」「オオカミ」の3つの分類でしたが、添え字 \(1\) ~ \(3\) を \(K\) に置き換えて \(\sum\) であらわすと、以下のようになります。

$$
\log L = \sum_{k=1}^{K} t_{k} \log y_{k} \tag{5.1} \
$$

$$
\begin{aligned}
&K:分類の数, t_{k}:正解ラベル, y_{k}:予測値&
\end{aligned}
$$

これが 対数尤度関数 となります。

サイコロの例でも確認済ですが、交差エントロピー \(E\) は対数尤度関数にマイナスをつけたものなので、

$$
E = - \log L
$$

$$
E = - \sum_{k=1}^{K} t_{k} \log y_{k} \tag{5.2}
$$

$$
\begin{aligned}
&K:分類の数, t_{k}:正解ラベル, y_{k}:モデルが計算した予測値&
\end{aligned}
$$

これで、学習時につかう 訓練データ 1件 あたりの交差エントロピー関数 \(E\) を定義することができました。

さっそく、 式 \((5.2)\) の交差エントロピー関数 \(E\) に以下のデータを再度つかって訓練データ1件ぶんの交差エントロピー誤差 を計算してみましょう。

$$
\begin{aligned}
\ E = &- \sum_{k=1}^{K} t_{k} \log y_{k} &\
&= - ( t_{1} \log y_{1} + t_{2} \log y_{2} + t_{3} \log y_{3}) & \
&= - ( 1 \cdot \log 0.33 + 0 \cdot \log 0.32 + 0 \cdot \log 0.35) \
&= -0.481486 \
\
&K:分類の数, t_{k}:正解ラベル, y_{k}:モデルが計算した予測値&
\end{aligned}
$$

この交差エントロピー誤差を損失関数として、損失関数が小さくなるようにモデルの重みパラメータを更新していくのが、基本的なニューラルネットワークの学習となります。

ちなみに、いまは以下のように訓練データ1件ぶんの学習で使う損失関数です。1件の入力データをニューラルネットワークに入力して得られた結果 \(y_{k}\) と正解ラベル \(t_{k}\) から誤差関数として交差エントロピー誤差を計算しました。

今回は、多値分類用交差エントロピーをデータ1件の場合で計算してみました。

次回は、これを N 件に拡張していきたいとおもいます。

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


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


navigation

Read more

Python と JavaScript で絵文字の文字数が違う!サロゲートペアが引き起こす位置ずれバグの話

Python と JavaScript で絵文字の文字数が違う!サロゲートペアが引き起こす位置ずれバグの話

こんにちは! Qualitegプロダクト開発部です! PII(個人情報)検出のデモアプリを開発していて、検出したエンティティの位置をハイライト表示する機能を実装していました。 バックエンドは Python(FastAPI)、フロントエンドは JavaScript という構成です。 ある日、テストデータにこんなメール文面を使ったところ、ハイライトの位置が途中から微妙にずれるバグに遭遇しました。 鈴木一郎 様 いつもお世話になっております。 サンプル商事の佐藤でございます。 先日の件、確認が取れましたのでご連絡いたします。 お忙しいところ恐縮ですが、ご確認のほど宜しくお願い致します。 💻 #オンラインでのお打ち合わせ、お気軽に声がけください! ―――――――――――――――――――――――――――――― サンプル商事株式会社 営業部 第一課 山田 太郎 (Yamada Taro) 〒100-0001 東京都千代田区千代田1-1-1 サンプルビル 3F tel: 03-1234-5678 https://example.com/contact 検出結果をハイライト表示

By Qualiteg プロダクト開発部
大企業のAIセキュリティを支える基盤技術 - 今こそ理解するActive Directory 第5回 ブラウザ設定と認証

大企業のAIセキュリティを支える基盤技術 - 今こそ理解するActive Directory 第5回 ブラウザ設定と認証

こんにちは、今回はシリーズ第5回「ブラウザ設定と認証」について解説いたします! さて、前回(第4回)では、プロキシサーバーをドメインに参加させることで、ChatGPTやClaudeへのアクセスを「誰が」行ったかを確実に特定する仕組みを解説しました。「信頼の連鎖」の概念や、Windows版Squidなら1時間で構築できる環境、Negotiate/NTLM/Basicという3段階の認証フォールバック機構について理解いただけたかと思います。 しかし、せっかくサーバー側で完璧な統合Windows認証環境を構築しても、ブラウザ側の設定が適切でなければ、ユーザーには毎回パスワード入力ダイアログが表示されてしまいます。 「Edgeだと自動でログインできるのに、Chromeだとパスワードを聞かれる」 「同じサーバーなのにURLの書き方で動作が違う」 これらはヘルプデスクに寄せられる典型的な問い合わせです。(ただ、業務に好きなブラウザ使っていいよ、という企業はそんなに多くはないとおもいます) 今回は、統合Windows認証がブラウザでどのように動作するのか、その仕組みから各ブラウザ(Edge/

By Qualiteg AIセキュリティチーム, Qualiteg コンサルティング
スライドパズルを解くAIから学ぶ、「考える」の正体

スライドパズルを解くAIから学ぶ、「考える」の正体

こんにちは! 「このパズル、AIの教科書に載ってるらしいよ」 子供の頃に遊んだスライドパズル。いや、大人が遊んでも楽しいです。 数字のタイルをカチャカチャ動かして揃えるあれです。実はこのシンプルなパズルが、AI研究の出発点のひとつだったって知ってました? 今回は、このパズルを題材に「AIがどうやって考えているのか」を解き明かしていきます。しかも、ここで使われている手法は、Google Mapsの経路探索からChatGPTまで、現代の様々な技術のベースになっているんです。 まず遊んでみよう 理屈の前に、まずは感覚を思い出してみてください。 最初に shuffle をクリックすると、配置がシャッフルされゲームを開始できます。 ちなみに必ず解くことができるようになっていますが、慣れていないとそれなりに難しいかもしれません。 どうでしょう? 何手でクリアできましたか? クリアできなくても大丈夫です。記事後半で、実際にAIが解いてくれる機能つきゲームも掲載しています^^ 以下は動画です。本ブログで紹介するアルゴリズムで実際にパズルを解く様子をご覧いただけます

By Qualiteg 研究部
楽観的ロック vs 悲観的ロック:実際のトラブルから学ぶ排他制御

楽観的ロック vs 悲観的ロック:実際のトラブルから学ぶ排他制御

こんにちは! Qualitegプロダクト開発部です! 「楽観的ロックを実装したのに、まだ競合エラーが出るんですけど...」 これは私たちが実際に経験したことです。 本記事では、楽観的ロックと悲観的ロックの違いを、実際に発生したトラブルを通じて解説します。 抽象的な説明ではなく、 「なぜそれが必要なのか」「どんな問題を解決できるのか」 を実感できる内容を目指します。 目次 1. 問題の背景:並列処理で謎のエラー 2. ロックなしの世界:なぜ競合が起きるのか 3. 楽観的ロックの導入:期待と現実 4. 楽観的ロックの限界:解決できなかった問題 5. 悲観的ロックによる解決 6. 実装時のハマりポイント 7. どちらを選ぶべきか:判断基準 8. まとめ 1. 問題の背景:並列処理で謎のエラー 1.1 システムの概要 私たちが開発していたのは、 複数のワークスペースを切り替えて使用するAPIサーバー でした。 当社AI関係のプロダクトの一部だったのですが、結合テスト兼負荷テストを実行すると、まれに発生してしまっていました。 ユーザーは複数のワーキン

By Qualiteg プロダクト開発部