私は最近、大学でデータ圧縮のコースを開始しました。ただし、コンピューターサイエンスに適用される「エントロピー」という用語の使用はかなり曖昧です。私が知る限り、それはシステムまたは構造の「ランダム性」にほぼ翻訳されます。
コンピューターサイエンスの「エントロピー」の適切な定義は何ですか?
エントロピーにはさまざまな意味があります。
コンピューティングでは、エントロピーは、暗号化またはランダムデータを必要とするその他の用途で使用するために、オペレーティングシステムまたはアプリケーションによって収集されるランダム性です。このランダム性は、ハードウェアソース、マウスの動きなどの既存のもの、または特別に提供されたランダム性ジェネレータから収集されることがよくあります。
情報理論では、エントロピーは確率変数に関連する不確実性の尺度です。このコンテキストでの用語自体は通常、シャノンエントロピーを指し、通常はビットなどの単位で、メッセージに含まれる情報を期待値の意味で定量化します。同様に、シャノンエントロピーは、ランダム変数の値がわからない場合に欠落している平均情報量の尺度です。
データ圧縮のエントロピー
データ圧縮のエントロピーは、圧縮アルゴリズムに入力するデータのランダム性を示す場合があります。エントロピーが大きいほど、圧縮率は低くなります。つまり、テキストがランダムであるほど、圧縮できる度合いが低くなります。
シャノンのエントロピーは、あらゆる通信の可能な限り最高のロスレス圧縮の絶対制限を表しています:シャノンのソースコーディングの定理は、メッセージを独立した同一の分布のランダム変数のシーケンスとしてエンコードすることを扱います。特定のアルファベットでメッセージをエンコードするための可能な表現は、エントロピーをターゲットアルファベットのシンボル数の対数で割ったものです。
より実用的な焦点を持つ私のお気に入りの定義は、優れた本の第1章にあります 実用的なプログラマー:ジャーニーマンからマスターへ Andrew HuntとDavid Thomasによる:
ソフトウェアエントロピー
ソフトウェア開発はほとんどすべての物理法則の影響を受けませんが、エントロピーは私たちに大きな打撃を与えます。エントロピーは物理学の用語で、システム内の「障害」の量を指します。残念ながら、熱力学の法則は、宇宙のエントロピーが最大に向かう傾向があることを保証しています。ソフトウェアの乱れが増すと、プログラマーはそれを「ソフトウェアの腐敗」と呼びます。
ソフトウェアの腐敗を引き起こす要因は多数あります。最も重要なものは、プロジェクトで働いている心理学、または文化のようです。たとえあなたが1つのチームであっても、プロジェクトの心理学は非常にデリケートなものになる可能性があります。最高の計画と最高の人材にもかかわらず、プロジェクトはその存続期間中に破滅と衰退を経験する可能性があります。しかし、他のプロジェクトでは、大きな困難と絶え間ないset折にもかかわらず、無秩序への自然の傾向とうまく戦い、うまくうまくいくことができます。
...
...
壊れたウィンドウ
壊れた窓は、かなりの期間修理されずに放置され、建物の住人に放棄感、つまり権力が建物を気にしないという感覚を植え付けます。そのため、別のウィンドウが壊れます。人々はポイ捨てを始めます。落書きが表示されます。深刻な構造的損傷が始まります。比較的短い時間内に、建物は所有者がそれを修正したいという欲求を超えて損傷し、放棄感が現実になります。
「壊れた窓理論」は、ニューヨークや他の主要都市の警察署に、大きなものを締め出すために小さなものを取り締まるよう促しました。壊れた窓、落書き、その他の小さな違反を常に把握することで、重大な犯罪レベルが低下しました。
ヒント4
壊れたウィンドウと一緒に暮らすな
「壊れたウィンドウ」(悪いデザイン、間違った決定、または悪いコード)を修復しないで放置しないでください。発見したらすぐに修正してください。適切に修正するのに十分な時間がない場合は、搭乗します。おそらく、問題のコードをコメントアウトするか、「実装されていません」メッセージを表示するか、代わりにダミーデータを置き換えることができます。さらなる損害を防ぎ、状況を把握していることを示すために、何らかの措置を講じます。
以下からのテキスト: http://pragprog.com/the-pragmatic-programmer/extracts/software-entropy
(ソース: mit.ed )
from メキシコ大学
エントロピーの情報理論的概念は、物理的概念の一般化です。エントロピーを記述する方法はたくさんあります。これは、ランダム変数のランダム性の尺度です。また、ランダム変数または確率過程に含まれる情報量の尺度でもあります。また、メッセージを圧縮できる量の下限でもあります。そして最後に、その値を決定するためにランダムなエンティティについて尋ねる必要があるはい/いいえの質問の平均数です。
確率計算のサンプルアプリケーションでのエントロピーの方程式:
それは、その値の確率のrvのすべての値の合計に、そのprobのログを掛けたものです(つまり、p(x)logp(x))。この方程式は、情報のプロパティの第一原理から導き出すことができます。
私は常にシャノンエントロピーの意味でエントロピーに遭遇しました。
から http://en.wikipedia.org/wiki/Information_entropy :
情報理論では、エントロピーは確率変数に関連する不確実性の尺度です。この文脈での用語自体は通常、シャノンエントロピーを指し、期待値の意味で、通常はビットなどの単位でメッセージに含まれる情報を定量化します。同様に、シャノンエントロピーは、ランダム変数の値がわからない場合に欠落している平均情報量の尺度です。
圧縮と情報理論の観点では、ソースのエントロピーは、ソースからのシンボルが伝達できる情報の平均量(ビット単位)です。非公式に言えば、シンボルの可能性が低いほど、その外観がもたらす驚きは大きくなります。
ソースにA
とB
のような2つのシンボルがあり、それらが同じ確率である場合、各シンボルは同じ量の情報(1ビット)を伝えます。 4つの同等のシンボルを持つソースは、シンボルごとに2ビットを伝えます。
より興味深い例として、ソースに3つのシンボル、A
、B
、およびC
があり、最初の2つが3番目のシンボルの2倍である場合、3番目のシンボルより驚くべきことですが、そうではありません。以下で計算されるように、このソースには1.52の正味エントロピーがあります。
エントロピーを「平均サプライズ」として計算します。各シンボルの「サプライズ」は、その確率にその確率の負のバイナリログを掛けたものです。
binary
symbol weight probability log surprise
A 2 0.4 -1.32 0.53
B 2 0.4 -1.32 0.53
C 1 0.2 -2.32 0.46
total 5 1.0 1.52
0から1までの値(排他的)のログは負であるため、バイナリログの負の値が(もちろん)使用されます。
ここに、情報理論におけるエントロピーの素晴らしい代替説明があります。
エントロピーは、予測の作成に関係する不確実性の尺度です。
エントロピーは、初期予測を行った後に結果が得られた場合にどのように驚いたかとして説明することもできます。
99%の確率で頭を、1%の確率で尾を与える曲がったコインがあるとします。テールを取得する可能性は1パーセントしかないため、実際にテールを取得した場合は非常に驚くでしょう。一方、すでに頭を獲得する可能性は99%あるので、頭を獲得しても驚くことではありません。
Surprise(x)
と呼ばれる関数があり、各結果に驚くべき量を与えると仮定しましょう。その後、確率分布のサプライズの量を平均化できます。この驚きの平均額は、私たちがどれほど不確実であるかの尺度としても使用できます。この不確実性はentropyと呼ばれます。
ワードエントロピーは1つの文で定義できます。
たとえば、宇宙の膨張を想像してください。最初から、すべての物質はビッグバンの前の小さなポイントで収集されたため、「すべての物質は1ポイント以内」でシステムを説明できました。今日、システム(つまり宇宙)を説明するためにより多くの情報が必要ですが、すべての惑星の位置、それらの動き、それらの上にあるものなどを説明する必要があります。パスワード(システム)に追加する文字が多いほど、パスワードを説明するためにより多くの情報が必要になります。次に、異なる単位で測定できます。たとえば、「hello」= 5文字のエントロピー= 40ビットのエントロピー(charsizeが8ビットの場合)などのビットまたは文字です。
これから、より多くの情報があれば、より多くの方法で情報を整理できるようになります。40ビットの場合、2 ^ 40通りの方法で整理できます。ここでパスワードについて話している場合、情報(ビット)の配置が可能なほど、(ブルートフォース攻撃または辞書攻撃で)クラッキングに時間がかかります。
簡単に言えば、エントロピーはランダム性を定義します。それは、何かが予測不可能なものに似ています。より専門的な言葉で言うと、「コンピューティングでは、エントロピーは、暗号化またはランダムデータを必要とする他の用途で使用するためにオペレーティングシステムまたはアプリケーションによって収集されるランダム性です。ウィキペディアで定義されているように、このランダム性は、ハードウェアソース、マウスの動きなどの既存のもの、または特別に提供されたランダム性ジェネレーターから収集されることがよくあります。
これで、ファイル内のバイトの乱れの程度の測定として、ファイルに関するエントロピーの意味を簡単に結論付けることができます。 nat、shannon、hartleyなど、エントロピーを定義するために使用されるさまざまな単位があります。まあ、使用される最も一般的なユニットはシャノンです。 Shannonのアルゴリズムによるファイルのエントロピーの値の範囲は0〜8です。したがって、エントロピーの値がゼロの場合、結果は確実であると言えます。逆に、エントロピーの値が8の場合、結果は最も予測不能です。イベントの結果のランダム性を測定するためにシャノンによって与えられた式は次のとおりです。
Entropy = ∑ pi log(1/pi)
ここで、iは確率piのイベントです。
この方程式の結果は常に0〜8になります。
詳細については、リンクをご覧ください: https://www.talentcookie.com/2016/02/file-entropy-in-malware-analysis/
エントロピーとは、顧客の要件に基づいてソフトウェアが時折変更される範囲を指します。そのため、顧客の要件を満たすためにソフトウェアを再形成するコストが最大になります。
エントロピーから大したことをするのは簡単です。私の考えでは、それはかなり シンプルで便利な概念 です。
基本的に、コインの反転、分岐命令の実行、配列のインデックス付けなど、イベントから何を学ぶかを平均化します。
検索アルゴリズムの途中での比較演算のように、1つの分岐を取る特定の確率Pと、他の分岐を取る1-Pがあります。
Pが1/2であると仮定します(バイナリ検索の場合)。次に、そのブランチを取得すると、ベース2のlog(2/1)が1であるため、以前より1ビット多くなります。一方、他のブランチを取得した場合も1ビット学習します。
学習する情報の平均量を取得するには、最初の分岐で学習したものにその分岐を取る確率を掛け、さらに2番目の分岐で学習したものにその分岐の確率を掛けます。
1/2ビット1ビット+ 1/2倍1ビットは、1/2ビット+ 1/2ビット、または合計1ビットのエントロピーです。それは、あなたがその決定から平均して学ぶことを期待できることです。
一方、1024エントリのテーブルで線形検索を実行しているとします。
最初の==テストでは、YESの確率は1/1024であるため、その決定でのYESのエントロピーは
1/1024 times log(1024/1)
または1/1024 * 10 =約1/100ビット。
したがって、答えがYESの場合、10ビットを学習しますが、その可能性は約1000分の1です。
一方、NOははるかに可能性が高いです。エントロピーは
1023/1024 * log(1024/1023)
または約1回、約ゼロ=約ゼロ。
この2つを足し合わせると、平均すると、その決定について1/100程度のことを学びます。
それが線形検索が遅い理由です。テーブル内のエントリを見つけるには10ビットを学習する必要があるため、各決定でのエントロピー(学習することが期待できる量)は小さすぎます。
コンピュータサイエンスのエントロピーは、一般にビット列がランダムであることを指します。次の質問は、それを正確にすることです。
簡単な言葉であなたがlangaugeの記号の確率を知っていれば、言語の記号の平均情報内容を計算できる。
または
言語のエントロピーは、言語の平均的なシンボルの情報量の尺度です
公正なコインを考えてください。
2つのシンボルがあり、それぞれ確率1/2であるため、エントロピーは次のように計算されます。
h =-(1/2 * log1/2 + 1/2 * log1/2)= 1
エントロピーには、通常、コンピューターサイエンスで多くの意味があります。コンテキストに依存します。セキュリティのエントロピーでは、たとえば、秘密キーを生成するときに、多くのアプリケーションがマウスを動かしてエントロピーを生成するように要求するとき、配置するランダム性の量を意味します。これは、ランダム性の「人間」要素を取得してエントロピーを生成し、キーを生成するハッシュプロセスに追加します。
現在、エントロピーのソフトウェアエンジニアリングの定義もあります。この定義は、古いコード、または多くの開発者が作成したコードを表します。通常、ソフトウェアプロジェクトをリファクタリングする時期が近づいたときに参照して使用されます。 「このプロジェクトのコードには膨大なエントロピーがあります。それを維持した個人の多くが現在プロジェクトに参加していないからです」。
これも私が覚えている3番目の使用例です。シミュレーテッドアニーリングのトピック(コンピューターサイエンスに関する限り)では、エントロピーは、アルゴリズムの評価中にどれだけの減衰が発生したかとして説明されます。
ただし、あなたの質問に答えたいと思います。辞書にあるものを除いて、単語「エントロピー」の具体的な定義はありません。コンピュータサイエンスがその用語をどのように適用する傾向があるかは、使用されている用語のコンテキストと、それが何に適用されているかによって異なります。
エントロピーは、ウイルス研究者にとってもハッシュコードのようなものです。エントロピーが少ないということは、暗号化または圧縮されたコードである可能性が高く、潜在的にウイルスである可能性があることを意味します。
標準バイナリは、圧縮または暗号化されたものよりも高いエントロピーを持ちます。