【基本情報技術者試験】同時エントロピーとは?新人エンジニア向けに類題でわかりやすく解説!
こんにちは。ゆうせいです。
今日は、データサイエンスや情報理論の基礎となる エントロピー について、新人エンジニアの皆さんと一緒に学んでいきましょう。
「エントロピー」と聞くと、物理学の話かな?と身構えてしまうかもしれませんね。でも大丈夫です。情報の世界では、これは ビット数 や 情報量 、あるいは 驚きの度合い を表す言葉なんです。
特に今回は、基本情報技術者試験や応用情報技術者試験でもたまに見かける 同時エントロピー(結合エントロピー) という概念について、オリジナルの類題を使って解説します。これを理解すれば、機械学習の決定木などの仕組みもなんとなく見えてきますよ。
さあ、脳のストレッチの時間です。一緒に計算してみましょう!
今回の研修課題
まずは、問題を見てみましょう。あるシステム開発会社での「コードレビューの結果」と、そのコードに「テストコードが書かれていたか」の関係を調査したデータです。
状況設定
あるプロジェクトで、1週間に提出されたプルリクエスト(修正依頼)が合計 8 件ありました。それぞれのプルリクエストについて、「テストコードの有無」と、その後のレビューで「一発合格したか、修正が必要だったか(合否)」の内訳は以下の通りでした。
| レビュー結果 | ||
| 合格 | 修正 | |
| テスト有無 | 有 | 4件 |
| 無 | 2件 |
問題
この時、テストコードの有無と、レビュー結果を知った時の 同時エントロピー(結合エントロピー) の値として適切なものを計算してください。なお、計算には以下の値を用いてください。
そもそも「エントロピー」ってなに?
計算に入る前に、言葉の意味を整理しましょう。
情報理論におけるエントロピーとは、一言で言えば 情報の不確定さ や ごちゃ混ぜ具合 を数値化したものです。
例えば、コイン投げを想像してください。表が出るか裏が出るかは五分五分ですよね。結果を知るまでは「どっちだろう?」というドキドキ(不確定さ)が最大です。この状態はエントロピーが高いと言えます。
一方で、両面とも「表」のコインがあったとしたらどうでしょう。投げる前から結果は分かっていますよね。この場合、不確定さはゼロなので、エントロピーもゼロになります。
つまり、何が起こるか予測しづらいほど、エントロピーの値は大きく なります。
同時エントロピーとは?
今回のテーマである 同時エントロピー は、2つの事柄(事象)をセットで考えた時の不確定さ です。
「テストコードがあるかどうか」と「レビューに合格するかどうか」。この2つの情報を組み合わせたときに、どれくらい結果が予測しにくいかを表す数値、と考えてください。
実際に計算してみよう
では、先ほどの問題を解いていきましょう。公式を覚えるよりも、手順を理解するほうが近道です。
同時エントロピーを求めるには、すべてのパターンの 確率 と 情報量 を計算し、最後にそれらを足し合わせます。
手順1:全体の確率を整理する
まず、全データ数は 8 件ですね。それぞれのパターンの確率を出してみましょう。
- テスト有 & 合格件数は 4 件です。確率は
ですね。
- テスト無 & 合格件数は 2 件です。確率は
です。
- テスト有 & 修正件数は 1 件です。確率は
です。
- テスト無 & 修正件数は 1 件です。確率は
です。
手順2:それぞれの情報量を計算する
次に、それぞれの確率を (対数)に入れて、情報量(ビット)に変換します。
公式は です。問題文にあるヒントを使いましょう。
- テスト有 & 合格 (確率
)情報量は
ビット
- テスト無 & 合格 (確率
)情報量は
ビット
- テスト有 & 修正 (確率
)情報量は
ビット
- テスト無 & 修正 (確率
)情報量は
ビット
確率が低い(珍しい)出来事ほど、起きた時の情報量(驚き)が大きいことがわかりますね!
手順3:期待値を求める(足し合わせる)
最後に、「確率 情報量」を計算して、全て合計します。これが同時エントロピーの値になります。
これらを合計すると...
答えは 1.75 ビット となりました。
実際の業務でどう役立つの?
計算お疲れ様でした!
「で、これがエンジニアの仕事にどう関係するの?」と思いましたか?
実は、この考え方は皆さんが将来触れるかもしれない技術の根幹に関わっています。
メリット
- 機械学習の理解が深まるAIがデータを学習する際、「決定木」という手法を使うことがあります。この時、「どの質問(条件)でデータを分ければ、一番きれいに分類できるか?」を判断するために、このエントロピーの減少幅(情報利得)を使います。
- データの圧縮ファイル圧縮のアルゴリズム(ZIPなど)は、出現確率の高いデータに短い符号を、低いデータに長い符号を割り当てることでサイズを小さくします。この限界値を決めるのがエントロピーです。
デメリット(注意点)
- 直感的に分かりにくい「1.75ビット」と言われても、具体的にどんな状態かイメージしづらいですよね。あくまで「乱雑さの指標」として割り切って使う必要があります。
- 計算が面倒対数(log)が出てくるので、電卓やプログラムがないと正確な値を出すのは骨が折れます。試験では今回のように計算しやすい値が与えられることが多いので安心してください。
今後の学習の指針
今日は同時エントロピーについて、具体的な計算を通じて解説しました。
もしこの分野に興味を持ったら、次は以下のキーワードについて調べてみてください。
- 条件付きエントロピー「テストコードがある」とわかっている状態で、「合格するかどうか」の不確定さはどうなるか?を表します。
- 相互情報量二つの変数がどれくらい強く関連しているかを示す指標です。「テストを書くと合格率はどれくらい上がるのか」を定量的に知ることができます。
数字の羅列に見えるログデータも、こうして確率と情報量として捉え直すと、また違った景色が見えてきます。ぜひ、日々の業務データに対しても「この事象のエントロピーは高いかな?」なんて視点を持ってみてください。
それでは、また次回の記事でお会いしましょう!