前置き
第3回目は情報理論です。
対数とか出てきて、正直高卒(実質中卒)の自分は未だに理解しきれてない部分もあるんですよね。勉強記事がそんなんでいいんかってお話は置いておきます。
情報理論
対数
2^3 = 8
log28 = 3
2に何乗すれば8になるか(この2は底という)
関数電卓のデフォルトの底は10である
和の計算
Σ n,i=1 {A}
{A}の中に使われているiに1~nの整数をインクリメントで代入していく。
それぞれの計算結果を足した数が答え。
例) Σ 3,i=1 {2i} = 2*1+2*2+2*3 = 12
情報量
・それがどれくらい起こりにくいかを表す尺度
例)6月に雨が降るのと雪が降るのだと、雪のほうが情報量が多い。
選択情報量 = -log2P
Pはその事象が起こる確率
全体の平均をとった時の情報量を平均情報量(エントロピー)という。
平均情報量 = Σn,i=1 {(-log2Pi)*Pi}
平均情報量の値を圧縮の限界値と言う
ハフマン符号
エントロピー符号のひとつでデータ構造の1つである2分木構造を利用
元の情報を復元できる可逆圧縮でありながら、データの全体量を減らせる。
エントロピーとかまどマギでしか聞いたこと無いッス
オートマトン
次の三つの特徴を持ったシステムのモデル
- 外から、情報が連続して入力される。
- 内部に状態を保持する。
- 外へ、情報を出力する。
ある状態から別の状態に移行することを遷移(センイ)という。
木の走査順と逆ポーランド表記法
木のそれぞれのnodeを読んでいくことを走査という。
走査を行う順番には三種類ある。
先行順 | ポーランド表記法 | +AB |
中間順 | 中間表記法 | A+B |
後行順 | 逆ポーランド表記法 | AB+ |
人間が理解しやすいのは中間表記法だが、コンピュータは逆ポーランド表記法が理解しやすい。
その為、演算はコンピュータ内部で逆ポーランド表記法に置き換えられている。
逆ポーランド記法の問題
中間表記:Y=(A-B)*C
逆ポ表記:YAB-C*=
中間表記:Y=(A+B)*(C-(D/E))
逆ポ表記:YAB+CDE/-*=
DNF記法
文法等の形式を定義するために用いられる言語
DNF記法の計算問題はメモ中にありませんでした。
計算量(オーダ)
あるプログラムを実行するのにどれくらいの時間がかかるかを、入力データに対する増加量で
表したもの。O-記法という。以下、よく出てくる代表的なオーダ↓
オーダ | 例(アルゴリズム) |
O(1) | ハッシュ |
O(log n) | 2分探索 |
O(n) | 線形探索 |
O(nlog n) | クイックソート, シェルソート |
O(n^2) | バブルソート, 挿入ソート |
AI
人間の完全な模倣が出来る強いAIはまだ実現していませんが、人間の一部の機能を代替して実現できる
弱いAIと呼ばれる技術は様々なものが実用化されてきている。
機械学習とディープラーニング
AIで最近よく使われる手法が、機械学習です。
その一分野に人間の神経回路網を模倣した手法であるニュートラルネットワークがある。これには、情報を伝えるための隠れ層と呼ばれる中間の層があるが、その層を複数にしてより複雑な学習が可能になったものがディープラーニング(深層学習)。
最後に
人類が大好きなAIの基礎知識に繋がっていくんですね~
私は仕事で触った感じ機械学習はそこまで好きになれませんでした。