情報に関する理論
情報量と符号化、文字コード、形式言語とオートマトン、計算量、AIと機械学習、コンパイラの仕組みのあらましを理解できるようになります。
ねらい
情報とは何か、コンピュータはそれをどう表現し、どう処理するのかという理論の全体像をつかみます。このレッスンを終えると、アナログ情報がデジタルになるまでの流れ、文字コードの種類、計算量のオーダー記法、AIと機械学習の基本用語を説明できるようになります。
ストーリー
あなたがスマートフォンの音声アシスタントに「明日の天気は」と話しかけると、数秒で答えが返ってきます。この短い時間に、あなたの声という波はデジタルデータに変換され、文字として表現され、意味が解析され、AIが答えを組み立てています。この一連の流れの裏側にあるのが、このレッスンで学ぶ理論たちです。入口から順にたどっていきましょう。
情報量と符号化:アナログをデジタルにする
情報量
情報理論では、出来事の起こりにくさで情報の量を測ります。めったに起こらない事象ほど、それが起こったと知らされたときの情報量は大きくなります。「明日、太陽が昇る」という知らせに驚きがなく、「明日、雪が降る(真夏に)」という知らせに価値があるのはこのためです。情報量の単位がビットです。
符号理論:声が0と1になるまで
音声のような連続した波をアナログ、とびとびの値で表したものをデジタルといいます。アナログをデジタルに変えるA/D変換は、次の手順で進みます。
- 標本化で、波の高さを一定の時間間隔で測り取ります。
- 量子化で、測った高さをとびとびの段階の値に割り当てます。
- 符号化で、その値を2進数の並びに変換します。
符号化には2つの方向性があります。情報源符号化は、データの無駄を削って小さくするデータ圧縮で、出現頻度の高い記号に短い符号を割り当てるハフマン符号が代表です。通信路符号化は、伝送中の誤りを見つけて直せるように工夫する誤り検出訂正です。圧縮で効率を高め、誤り訂正で信頼性を高めるという役割の違いを押さえましょう。
文字の表現:文字コードの世界
コンピュータは文字も番号で扱います。文字と番号の対応表が文字コードです。
| 文字コード | 特徴 |
|---|---|
| ASCIIコード | 英数字と記号を7ビットで表す、最も基本的なコード |
| JISコード、シフトJISコード | 日本語の文字を扱うために作られたコード |
| EUC(拡張UNIXコード) | UNIX系の環境で使われてきた日本語対応コード |
| Unicode、UCS | 世界中の文字を一つの体系で扱うことを目指したコード |
メールやウェブで文字化けが起こるのは、書いた側と読む側で想定する文字コードが食い違うためです。現在のウェブではUnicodeが広く使われています。
論理と推論:演繹と帰納
正しい結論を導く筋道には、大きく2つの型があります。
- 演繹推論は、一般的な規則を個別の事例に当てはめて結論を導きます。「すべての人間は死ぬ。ソクラテスは人間である。ゆえにソクラテスは死ぬ」という三段論法が典型です。前提が正しければ結論は必ず正しくなります。
- 帰納推論は、個別の事例を集めて一般的な規則を推測します。「このカラスも、あのカラスも黒い。だからカラスは黒いのだろう」という推測です。多くの事例に支えられますが、結論が必ず正しいとは限りません。
「である」という性質や関係を記号で厳密に扱う論理体系を述語論理といい、その考え方は関係データベースの理論的な土台になっています。また、後で学ぶ機械学習は、大量のデータから規則を見つけ出す点で帰納推論の考え方に近いものです。
形式言語とオートマトン
形式言語:文法を厳密に定義する
プログラム言語は、あいまいさが許されません。言語の文法を数学的に厳密に定義する枠組みが形式言語です。文法の代表的な表記法にBNFと構文図式があります。また、文字列のパターンを表す記法が正規表現で、検索や入力チェックに広く使われています。
数式の書き方にも種類があります。演算子を数の後ろに置く書き方を逆ポーランド表記法といい、かっこを使わずに計算の順序を表せるため、コンピュータが式を処理する場面で使われます。
オートマトン:状態の移り変わりで動きを表す
有限オートマトンは、「いまどの状態にいるか」と「入力によってどの状態へ移るか」だけで動きを表す計算のモデルです。状態の移り変わりは、状態遷移図や状態遷移表で表します。たとえば自動販売機は「金額不足」「投入済み」などの状態を持ち、硬貨の投入という入力で状態が移ります。形式言語の文法チェックとも深い関係があり、コンパイラの字句解析にも応用されています。
計算量:アルゴリズムの速さを見積もる
同じ問題でも、解き方によって処理時間は大きく変わります。データ量nが増えたときに処理時間がどう伸びるかを大づかみに表す記法がオーダー記法です。処理時間に注目した計算量を時間計算量といいます。
たとえば、n件のデータを先頭から順に調べる処理の計算量はnに比例します。2重のループでn件どうしを総当たりで比べる処理はnの2乗に比例し、データが2倍になると時間はおよそ4倍になります。データ量が大きくなるほど、オーダーの差が実際の速さの差として効いてきます。
AI(人工知能):機械が学ぶ仕組み
AIの基本的な考え方
初期のAIの代表がエキスパートシステムです。専門家の知識を知識ベースに蓄え、推論エンジンがそれを使って結論を導きます。知識を人が書き与えるこの方式に対し、データから機械が自分で規則を見つける方式が機械学習です。
機械学習の3つの型
- 教師あり学習は、正解付きのデータで学ぶ方式です。数値を予測する回帰と、種類を判定する分類が代表です。
- 教師なし学習は、正解なしのデータから構造を見つける方式です。似たものどうしをまとめるクラスタリングや、データの特徴を少ない変数に要約する次元削減が代表です。
- 強化学習は、試行錯誤の結果に与えられる報酬をもとに、よい行動を学ぶ方式です。
学習に使うデータは、学習(訓練)データ、検証データ、テストデータに分けて使います。訓練データに過剰に適合してしまい、未知のデータに弱くなることを過学習といい、未知のデータへの対応力を汎化性能といいます。過学習を避けて汎化性能を確かめるために、交差検証やホールドアウト検証という評価の工夫があります。
ディープラーニングとその応用
人間の脳の神経回路をまねた計算モデルがニューラルネットワークで、層を深く重ねたものがディープラーニング(深層学習)です。誤差を出力側から入力側へさかのぼらせて重みを調整するバックプロパゲーション(誤差逆伝播法)で学習します。
応用分野では、画像認識に強い畳み込みニューラルネットワーク(CNN)、時系列データに強いリカレントニューラルネットワーク(RNN)、データを新しく作り出す生成モデルなどが使われています。近年の対話型AIの中核は大規模言語モデル(LLM)で、望む出力を引き出すための指示の工夫をプロンプトエンジニアリングと呼びます。
コンパイラとプログラム言語
人間が書いたプログラムをコンピュータが実行できる形に翻訳するソフトウェアがコンパイラです。翻訳は次の段階で進みます。
- 字句解析で、プログラムの文字列を単語に区切ります。
- 構文解析で、単語の並びが文法に合っているかを調べます。
- 意味解析で、型の整合性などの意味を検査します。
- コード生成で、目的プログラムを作り出します。あわせて、実行が速くなるように最適化を行います。
プログラム言語には、処理の手順を順に書く手続型言語、関数の組合せで書く関数型言語、事実と規則で書く論理型言語、データと操作をまとめて扱うオブジェクト指向言語といった型があり、適用分野に応じて使い分けられています。
例題
次の問いに答えてください。
問1 「この工場のこれまでの不良品はすべて金曜日に作られていた。だから不良品は金曜日に発生しやすいのだろう」という推論は、演繹推論と帰納推論のどちらですか。
問2 世界中の文字を一つの体系で扱うことを目指して作られた文字コードは何ですか。
解答と解説
問1の答えは帰納推論です。個別の事例(これまでの不良品)を集めて一般的な傾向(金曜日に発生しやすい)を推測しているためです。前提がすべて正しくても、結論が必ず正しいとは限らない点が演繹推論との違いです。
問2の答えはUnicodeです。ASCIIコードは英数字中心、JISコードやシフトJISコードは日本語向けのコードであり、世界中の文字を一つの体系で扱う目的で設計されたのはUnicodeです。
応用
本試験を意識した問題を解いてみましょう。
問 機械学習における過学習の説明として、適切なものはどれでしょうか。次の中から選んでください。
- 訓練データに過剰に適合してしまい、未知のデータに対する汎化性能が低くなること
- 学習を繰り返しても誤差が小さくならず、学習が終わらないこと
- データの特徴を少ない変数に要約して、データの規模を小さくすること
- 誤差を出力側から入力側へさかのぼらせて、ネットワークの重みを調整すること
解答と解説
答えは1です。過学習は、訓練データの細かな癖にまで合わせ込んでしまった結果、未知のデータへの対応力である汎化性能が下がる現象です。2は学習が収束しない問題の説明であり、過学習とは別の話です。過学習ではむしろ訓練データへの誤差は小さくなります。3は教師なし学習の次元削減の説明です。4はバックプロパゲーション(誤差逆伝播法)の説明で、学習の仕組みそのものであり、過学習という現象の説明ではありません。
分からなかった点・気になった点
読み込み中です。