ITパスポート単語帳 - 基礎理論
2進数 【二進数】 ⭐⭐⭐
数を書き表す方法(記数法)の一つで、基数を2(二)とした表記法のこと。アラビア数字の「0」と「1」を用いてすべての数を表現する。情報を2進数の値の連なりとして表現する手法を「デジタル」(digital)という。
普段我々が日常的な数字の読み書きや算術に用いる位取り記数法は「10進数」(十進数)で、一つの桁の表現に「0」から「9」の10種類の数字を使い、各桁の左の桁が10倍、右の桁は1/10を表している。
一方、2進数は一つの桁の表現が「0」と「1」の二通りしか無い記数法で、桁が一つ左へ移動する毎に値の重みが2倍に、右へ移動するごとに1/2倍になる。整数の右端の桁は1(20)の位、その左は2(21)の位、その左は4(22)の位、その左は8(23)の位…といった具合に各桁の重みが決まる。
<$Fig:binarynumber|center|true>例えば、2進数の「1101」は左端から順に「8の位」が1、「4の位」が1、「2の位」が0、「1の位」が1であるため、10進数では 1×8 + 1×4 + 0×2 + 1×1 の「13」となる。逆に、10進数の「21」は、2のべき乗の足し算で表すと 16 + 4 + 1、すなわち 24×1 + 23×0 + 22×1 + 21×0 + 20×1 と表せるため、2進数では「10101」となる。
2進数とビット・バイト
2進数は二つの状態の組み合わせですべての数を表現することができるため、これをスイッチのオン・オフや電圧の高低、磁石のN極とS極、電荷の有無など、対となる物理的な状態に対応させることにより、機械による情報の記憶や伝達、演算を容易に取り扱うことができるようになる。
現代の電子式のコンピュータは原則としてすべての情報を2進数のデータに置き換えて処理を行い、2進数の1桁に相当するデータ量の最小単位を「ビット」(bit)という。実用上はある程度まとまった桁数のビット列を対象にデータの保存や操作を行うため、8ビットに相当する「バイト」(byte)という単位が用いられることが多い。1バイトは8桁の2進数に相当するため、28=256種類の状態を表現できる。
10進数 【10進法】 ⭐⭐⭐
数を書き表す方法(記数法)の一つで、基数を十とした表記法のこと。人間が普段最も一般的に利用している位取り記数法で、通常、アラビア数字の「0」から「9」までのすべての数字を用いて数を表現する。
10進数では桁が一つ左へ移動する毎に値の重みが十倍に、右へ移動するごとに十分の一になる。すなわち、整数の右端の桁は一(100)の位、その左は十(101)の位、その左は百(102)の位、その左は千(103)の位、といった具合に各桁の重みが決まる。
コンピュータでは二つの状態の組み合わせで数値を表現する2進数の方が都合が良いため、人間などが10進数で入力した値は内部でまず2進数による表現に変換されてから記録、伝送、計算などを行うようになっている。また、処理結果を人間などに提示する場合も、内部の2進数による表現から10進数の表記に変換して出力される。2進表現を「バイナリ」(binary)、十進表現を「デシマル」(decimal)と呼ぶことがある。
「10進」と「十進」
どのような基数の表記でも、右から2桁目が1で右端が0の値はすべて「10」となり、それらはすべての異なる値である(2進数の「10」は2、8進数の「10」は8、16進数の「10」は16である)ため、基数が十であることを示すために「10進数」「10進法」とするのは紛らわしく不適切であるとする考え方もあり、そのような場合は「十」 (同様に英語圏では “ten” あるいは “decimal” )という表記が好まれる。
基数変換 【進数変換】
ある基数(n進数のn)で表記された数値を、別の基数による表記に変換すること。人間は10進数、コンピュータは2進数を基本とするため、IT分野では2進数、8進数、10進数、16進数などの間でよく変換が行われる。
位取り記数法における基数(radix)は各桁の重みを表しており、10進数であれば各桁の重みが右隣の10倍、左隣の1/10倍となり、2進数ならそれぞれ2倍、1/2倍となる。
基数変換ではこの各桁の重みを利用して、ある基数による数の表記を別の基数で表していく。例えば、2進数の「1101」を10進数に変換する場合、1×2<3 + 1×2<2 + 0×2<1 + 1×2<0 となり、結果は「13」となる。
また、2進数と16進数の場合、16進数の「0」は2進数の「0000」、「F」は「1111」というように2進数の4桁が16進数の1桁に相当するため、2進数を4桁ごとに区切って対応する16進数に、あるいはその逆に置き換えることで容易に相互の変換を行うことができる。
基数変換は数の表記の仕方を変えるだけであるため、原則として変換の前後で数の大きさそのものに変化はない。ただし、小数を扱う場合はある基数で有限小数であるものが別の基数に表すと循環小数になってしまう場合があり、有限桁で正確に表すことはできなくなってしまう。
ベン図 【Venn diagram】 ⭐⭐
集合間の関係を表す図法の一つ。集合の範囲を円などの図形で表し、図形の重なりによって共通部分を表現するもの。概ね3つ程度までの集合の関係を表すのに用いられる。
19世紀の終わり頃、イギリスの数学者ジョン・ベン(John Venn)によって考案された図法である。まず大きな長方形などで描画範囲を設定し、これをすべての要素が含まれる全体集合とする(この領域は設定しない場合もある)。個々の集合は円や楕円などの図形で表される。集合間に共通の要素がある場合、図形の一部を重ねて表現する。
集合Aを円で表すとき、Aの外側はAの補集合(A、Ac)を表す。集合Bも円で表すと、両者の重なった領域が共通部分(A∩B)、重なりも含め両者を合わせた領域が和集合(A∪B)を表す。BがAに完全に含まれる場合、BはAの部分集合(A⊃B)となる。
3つ以上の集合の関係も図示できるが、4つ以上は重なり方の組み合わせを漏らさず図示するのが難しくなるため、あまり用いられない。説明のために集合ごとに色や模様で塗り分けたり、現在着目している領域のみを着色することが多い。黒で塗られた領域は元が存在しないことを表すため、塗り分けで黒を用いることは控える。
集合演算の結果を視覚的に分かりやすく表すことができるため、これを論理演算の図示に応用することもある。変数を円に対応付け、円の内部を真(true)または1、外側を偽(false)または0に対応付ける。例えば、2変数PとQの場合、円Pの外側がPの論理否定(not P/¬P)、円の重なりが論理積(P and Q/P∧Q)、両円を合わせた領域が論理和(P or Q/P∨Q)に対応する。
真理値表 【真偽表】 ⭐⭐
ある論理回路や論理式について、考えられるすべての入力の組み合わせと、対応する出力を一つの表に書き表したもの。
真理値(ブール値/真偽値)は論理演算などで用いられる値で、「真」(true)と「偽」(false)の2値のいずれかを取る値である。コンピュータ上ではすべての情報を「1」と「0」を並べた2進数で表すため、真と1を、偽と0を対応付けて論理回路で様々な処理を行う。
真理値表は論理演算の入力値と出力値の対応関係を図に表したもので、一般的な形式では表の左側の列に入力を、右側の列に出力をそれぞれ並べる。各行に入力の組み合わせと、その時の出力を記入していく。各項には「1」(あるいは「真」「Truth」「T」)か「0」(あるいは「偽」「False」「F」)のどちらかを記入する。
行数
<$Fig:truthtable|right|true>入力が1つ(NOT演算)の場合は入力「0」と「1」の2行で表され、入力が2つの場合は「0-0」「0-1」「1-0」「1-1」の4行となる。同様に、3入力では8行、4入力では16行というように、2の入力数乗が表の行数となる。
列数
ある特定の論理演算の結果を示す場合は出力は1列となるが、複数の異なる演算について結果を比較するために、それぞれの演算ごとに列を用意する(列名部分に演算内容を記述する)場合もある。論理回路の動作を示す表の場合には、出力の数だけ列を用意し、それぞれの演算結果を書き込んでいく。
論理演算 【ブーリアン演算】 ⭐⭐
真(true)と偽(false)の二通りの状態を取る真偽値(真理値/ブール値)の間で行われる演算。コンピュータでは真を1に、偽を0に対応付けたビット演算として行われることが多い。
入力が一つの単項演算として、入力値の反対の値を出力する「否定」(NOT A:Aではない)がある。入力が二つの二項演算には、どちらかが真なら真を出力する「論理和」(A OR B:AまたはB)、両者とも真の時のみ真を出力する「論理積」(A AND B:AかつB)、両者が異なる時に真を出力する「排他的論理和」(XOR:eXclusive OR)がある。
電子回路などでは、論理和と否定を組み合わせた「否定論理和」(NOR:Not OR)、論理積と否定を組み合わせた「否定論理積」(NAND:Not AND)が用いられることもある。排他的論理和と否定を組み合わせた「否定排他的論理和」(XNOR)は値が同じとき真、異なるとき偽となるため「同値」(EQ:equal)とも呼ばれる。
<$Fig:logic|center|false>三項以上を計算する際は二項ずつの計算を繰り返すことで結果が得られる。その際、四則演算のように交換法則や分配法則、結合法則、ド・モルガンの法則などが成り立つ。すべての論理演算はNOT、AND、ORの三つの組み合わせで構成できるが、この三つはすべてNANDの組み合わせで構成でき、NANDだけですべての論理演算を記述できることが知られている。
コンピュータでは真偽値自体の演算(プログラミング言語におけるブール型の値の演算など)の他に、真を1、偽を0に置き換えてビット間で論理演算を行うことがある。ビット列について論理演算を行う場合は二つのビット列のぞれぞれ対応する位置にあるビット同士で論理演算を行う。
このような演算方式を真偽値の論理演算と区別して「ビット演算」(bitwise operation)と呼ぶこともある。なお、ビット演算には論理演算に相当する演算以外にも、シフト演算やローテート演算などビット列を左右に移動する操作もある。
プログラミング言語では算術演算などと並んで最も基本的な演算の一つとして論理演算が用意されていることが多く、論理演算子によって式を記述する。演算子は「&&」のような記号を用いる場合と、「and」のような英単語をそのまま用いる場合がある。C言語の「&」と「&&」のように、論理演算と対応するビット演算にはそれぞれ別の演算子が与えられていることが多い。
論理積 【AND演算】 ⭐⭐
論理演算の一つで、二つの命題のいずれも真のときに真となり、それ以外のときは偽となるもの。論理回路や2進数の数値の場合は、二つの入力の両方が1のときのみ出力が1となり、いずれか一方あるいは両方が0の場合は0となる。
論理学では記号「∧」を用いて「P∧Q」のように表記し、電子工学(論理回路)では記号「⋅」を用いて「P⋅Q」のように表す。AND演算演算を行う論理回路を「論理積演算回路」「AND演算回路」「ANDゲート」などと呼ぶ。
多くのプログラミング言語でもビットごとのAND演算演算を行う演算子が用意されており、キーワード「and」を用いて「P and Q」と書くものや、C言語に倣って「&」(アンパサンド)記号を用いて「P&Q」と表記する言語が多い。また、ビット演算と区別して条件式などで用いる真偽値(真理値)のAND演算演算を定義している言語では、「and」キーワードや「&&」などの記号が用いられることが多い。
三入力以上の場合は、まず二つを選んでAND演算を取り、その結果と残りの一つを選んでAND演算を取り、という手順を繰り返すことで結果を得ることができ、すべての入力が1のときのみ出力が1となり、いずれかの入力が0の場合には0となる。
AND演算は論理和(OR演算)と論理否定(NOT演算)を組み合わせて P∧Q ⇔ ¬(¬P∨¬Q) と表すことができる。逆に、論理和はAND演算と論理否定を組み合わせて P∨Q ⇔ ¬(¬P∧¬Q) と表すことができる。これをド・モルガンの法則という。
論理和 【OR演算】 ⭐
論理演算の一つで、二つの命題のいずれか一方あるいは両方が真のときに真となり、いずれも偽のときに偽となるもの。論理回路や2進数の数値の場合は、二つの入力のいずか一方あるいは両方が1のとき出力が1となり、いずれも0の場合に0となる。
論理学では記号「∨」を用いて「P∨Q」のように表記し、電子工学(論理回路)では記号「+」を用いて「P+Q」のように表す。OR演算演算を行う論理回路を「論理和演算回路」「OR演算回路」「ORゲート」などと呼ぶ。
多くのプログラミング言語でもビットごとのOR演算演算を行う演算子が用意されており、キーワード「or」を用いて「P or Q」と書くものや、C言語に倣って「|」記号を用いて「P|Q」と表記する言語が多い。また、ビット演算と区別して条件式などで用いる真偽値(真理値)のOR演算演算を定義している言語では、「or」キーワードや「||」などの記号が用いられることが多い。
三入力以上の場合は、まず二つを選んでOR演算を取り、その結果と残りの一つを選んでOR演算を取り、という手順を繰り返すことで結果を得ることができ、いずれかの入力が1のときに出力が1となり、すべての入力が0の場合に0となる。
OR演算は論理積(AND演算)と論理否定(NOT演算)を組み合わせて P∨Q ⇔ ¬(¬P∧¬Q) と表すことができる。逆に、論理積はOR演算と論理否定を組み合わせて P∧Q ⇔ ¬(¬P∨¬Q) と表すことができる。これをド・モルガンの法則という。
論理否定 【NOT演算】
論理演算の一つで、与えられた命題が真のときに偽となり、偽のとき真となるもの。論理回路や2進数の数値の場合は、入力が1のとき0となり、0のとき1となる。
論理学では記号「¬」を用いて「P¬Q」のように表記し、電子工学(論理回路)では記号「¯」(上線)を用いて「P」のように表す。NOT演算演算を行う論理回路を「否定演算回路」「NOT演算回路」「NOTゲート」などと呼ぶ。
多くのプログラミング言語でもビットごとのNOT演算演算(ビット反転)を行う演算子が用意されており、キーワード「not」を用いて「not p」のように書くものや、C言語などの記法にならって「~」(チルダ)記号を用いて「~p」のように表記する言語が多い。
ビット演算と区別して条件式などで用いる真偽値(真理値)のNOT演算演算を定義している言語では、「not」キーワードや「!」などの演算子が用いられることが多い。いずれの場合も、演算の対象となる被演算子(オペランド)が一つの単項演算子である。
XOR 【eXclusive OR】 ⭐⭐
論理演算の一つで、二つの命題のいずれか一方のみが真のときに真となり、両方真や両方偽のときは偽となるもの。論理回路や2進数の数値の場合は、二つの入力のうち片方のみが1であるときのみ出力が1となり、両方1や両方0の場合は0となる。
論理和(OR演算)に似ているが、論理和では「いずれか一方が真」なら他方が何であれ結果は真となるが、排他的論理和では「いずれか一方のみが真」の場合に真となる。両者共に真の場合は真とならないことを「排他的」と表現している。
三入力以上の場合は、まず二つを選んでXOR演算を取り、その結果と残りの一つを選んでXOR演算を取り、という手順を繰り返すことで結果を得ることができる。入力における真の数が奇数個のときに出力が真に、偶数個のとき偽となる。
論理学では記号「⊻」を用いて「P⊻Q」のように表記し、電子工学(論理回路)では記号「⊕」を用いて「P⊕Q」のように表す。XOR演算演算を行う論理回路を「排他的論理和回路」「XOR回路」「XORゲート」などと呼ぶ。
多くのプログラミング言語でもビットごとのXOR演算演算を行う演算子が用意されており、キーワード「xor」を用いて「P xor Q」と書くものや、C言語に倣って「^」(ハット、キャレット)記号を用いて「P^Q」と表記する言語が多い。
あるビットが「0」のとき、「1」とXOR演算を取ると「1」になるが、元の値が「1」なら結果は「0」になる。すなわち、「1とXOR演算を取る」という演算は「そのビットの値を反転する」という操作になる。これを利用して、反転したい位置を「1」にセットしたビット列を用いて、入力値の特定のビットのみを反転させるという操作がよく用いられる。
度数分布表
多数のデータを整理する手法の一つで、値を一定の幅ごとに区切った範囲に属するデータの数を数え、表の形にまとめたもの。どの範囲の値が多く、どの範囲が少ないかを一目で確認できる。
数値データの分布を調べるのに用いられるシンプルな表で、データが取りうる値を均等な幅の区間(これを階級という)に分割し、各階級に属するデータを数える。階級と属するデータの数(これを度数という)を2列の表の形でまとめる。
例えば、テストの点数を表にまとめる場合、「0~19点」「20~39点」「40~59点」「60~79点」「80~100点」といった階級に区切り、それぞれに属する人数を数えて「3人」「5人」「7人」「13人」「5人」などのように書き入れていく。
各階級の中央の値「10点」「30点」「50点」「70点」「90点」を、その階級を代表する「階級値」という。階級の幅は任意に決めてよいが、小さすぎると度数の差がつきにくく、大きすぎると度数の変化が大きすぎて分布の様子が分かりにくくなる。
度数分布表をグラフ化したものを「ヒストグラム」(histogram)という。横軸に階級、縦軸に度数を取り、各階級に度数の長さの棒(長方形)を並べて分布の様子を視覚的に表現する。複数の系列を同じグラフに描画して比較したい場合は棒の代わりに折れ線グラフで度数を表現した「度数分布多角形」(frequency polygon)が用いられる。
ヒストグラム 【度数分布図】 ⭐
データの分布を表す統計図の一つで、縦軸に値の数(度数)、横軸に値の範囲(階級)を取り、各階級に含まれる度数を棒グラフにして並べたもの。どの範囲の値が多く、どの範囲が少ないかを視覚的に表現できる。
値の出現頻度の高い階級は高い棒で、低い階級は低い棒で図示されるため、出現頻度の高低やバラつき具合を視覚的に容易に把握できる。各階級の度数を示す棒のことを「ビン」(bin)と呼ぶことがある。
すべてのビンの面積の総和が全体の度数を表しており、各ビンの面積は全体に占めるその階級の度数の割合を視覚的に表現したものとなっている。同じデータ群でも階級の幅の取り方次第でビンの形状や分布は異なるが、どのような基準で区分すべきかについて様々な方法論が提唱されている。
また、手前のすべての区間の度数を足し合わせた累計値をその区間の度数とし、これを右肩上がりの棒グラフの列で示したものを「累積ヒストグラム」(cumulative histogram/累積度数図)という。端からどの区間までが重要かを見極める場合などに利用される。
代表値
値の集団があるとき、全体の特徴を一つの値で表したもの。平均値や中央値、最頻値などいくつかの種類があり、特性や向き不向きが異なる。
統計調査などで様々な対象から値を取得すると、様々な大きさの値が集まるが、値全体を要約し、その中心的な傾向を把握することができる一つの値を代表値という。
最もよく用いられるのは「平均値」(average)で、全体の総量が変わらず、すべて同じ値だったらいくつになるかを求めたものである。総量の表し方によりいくつかの種類があるが、最も一般的な「算術平均」(単純平均/相加平均)では、全体の和を値の数で割って求める。
他に、大きい順あるいは小さい順に並べ替えたときに順位がちょうど真ん中の値で代表する「中央値」(median:メジアン/メディアン)や、各値の出現回数(頻度/度数)を数えて最も多く出現する値で代表する「最頻値」(mode:モード)などが用いられる。
平均はすべての値を評価に含めることができるが、少数の極端な値(外れ値)に影響されやすい。中央値は外れ値の影響を受けないが、中央付近の値の変動しか評価しないため時系列の変化を表すのは苦手である。最頻値は値の分布の偏りが小さい(一様に近い)集団が苦手だが、数値で表されないデータ(名義尺度)の集計にも適用できる。
平均値 【平均】 ⭐
値の集団があるとき、全体の量は変えずにすべての値が同じだったらいくつになるかを求めたもの。集団全体の性質を表す代表値として最もよく用いられる。
単に平均値という場合はすべての値を足して個数で割った「算術平均」(相加平均、単純平均)を指す。全体の総和は変わらずすべての値が同じだったらいくつになるかを求めたもので、全体の値の水準を表している。
平均値の算出法として、すべての値(n個)を掛け合わせてn乗根を求めることもある。全体の積が同じですべての値が同じだったらいくつになるかを求めたもので、「幾何平均」(相乗平均)と呼ばれる。他にも調和平均、対数平均、加重平均など様々な算出法がある。
平均値は代表値として最もよく用いられるが、値の分布によっては必ずしも全体の性質を表すのに適さない場合がある。例えば、少数の値が極端に大きい(あるいは小さい)と、その値に引きずられてほとんどの値よりずっと大きい(あるいは小さい)値が平均値となることがある。
他によく用いられる代表値として、大きい順に並べ替えたときに順位がちょうど真ん中の値を求める「中央値」(median:メディアン/メジアン)、同じ値が出現する回数(あるいは区間ごとの頻度)を数え、最も出現頻度が大きいものを取る「最頻値」(mode:モード)がある。
中央値 【メジアン】 ⭐
値の集団があるとき、最大値から最小値まで順に整列したとき順位がちょうど真ん中である値のこと。集団全体の性質を表す代表値の一つとしてよく用いられる。
値を大きい順あるいは小さい順に並べた時、ちょうど真ん中にある値が中央値である。値が偶数個の場合は中央の値が2つになるため、両者の平均値(算術平均)を中央値とする。例えば、「0, 5 ,1, 9, 7」という値の集合がある場合、大きい順でも小さい順でもちょうど3番目が「5」となり、これが中央値となる。
代表値としては値を均した「平均値」(算術平均/相加平均)を用いることが多いが、平均値は極端な値が含まれる場合にその影響を受けやすいという難点がある。例えば、10軒の家があって9軒は車を1台所有しており、残り1軒が11台所有している場合、1軒あたりの平均所有台数は「2台」となるが、実際に2台以上所有しているのは1軒だけである。
このような場合、中央値は5位と6位の中間、すなわち「1台」となり、大半の家が1台のみである実態をよく表している。ただし、時系列の比較などを行う場合、中央値は中央付近の値の動向しか反映しないため、全体の変化の傾向などを表すのには不向きである。
集団の代表値としては平均値、中央値の他にも、同じ値が出現する回数(あるいは区間ごとの頻度)を数え、最も出現頻度が大きいものを取る「最頻値」(mode:モード)を用いることがある。先の車の所有台数の例では最頻値も「1台」である。
最頻値 【モード】
値の集団があるとき、各値が出現する回数を数え、最も多く現れる値のこと。集団全体の性質を表す代表値の一つとしてよく用いられる。
集団の中で同じ値が何回出現するかを調べ、最も多く出現する値が最頻値である。例えば、{ 0, 1, 1, 1, 2 } という値の集合があるとき、この中には「0」が1回、「1」が3回、「2」が1回出現しており、最頻値は3回の「1」となる。
連続値の場合は全く同じ値が繰り返し現れることは稀であるため、度数分布表やヒストグラムを用いて「0以上10未満」「10以上20未満」のように区間を区切って頻度を数え、最も多い区間の中心の値(10~20が最多なら15)を最頻値とする。
最頻値は一つに定まるとは限らない。「0, 1, 1, 2, 3, 3, 4」の場合、最多頻度2回の値が「1」と「3」2つとなり、両者ともに最頻値となる。このように最頻値が複数の場合を「多峰性」(multimodal)の分布、中でも2つの場合を「二峰性」(bimodal)の分布という。最も極端な場合、すべての値が同じ頻度で出現するとすべての値が最頻値となる(最頻値を考える意味がなくなる)。
代表値としては他にも、全体を同じ値に均した「平均値」(average)、順位がちょうど真ん中の値を取る「中央値」(median:メジアン、メディアン)などがある。統計値などがきれいな山型の分布にならない場合には、これらより最頻値で代表させるのが適していることがある。また、平均値や中央値と異なり、「○○という回答が最も多かった」というように数値で表されないデータ(名義尺度)の集計にも適用できるという重要な性質がある。
標準偏差 【SD】
統計における指標の一つで、データ群のばらつき具合を表す値。この値が小さいほど平均付近にデータが集まっていることを表し、大きければ平均から外れたデータがたくさんあることを表している。
標準偏差は分散の正の平方根で、データが平均値から平均でどのくらい離れているかを表している。算出方法は、各値と平均値の差を二乗した値の和を求め、これをデータの数で割った平均のルートを取る(二乗平均平方根)。
例えば、{10,20,30} という3つの標本の標準偏差は、平均値20を用いて √[{(10-20)2+(20-20)2+(30-20)2}/3] と表され、約8.16となる。{0,20,40} ならば約16.33となり、すべて平均値に等しい {20,20,20} ならば標準偏差は0となる。
分散も散らばり具合を表しているが、元の値と平均の差の二乗の平均であるため、元の値とは次元が異なる。標準偏差はその平方根を取っているため、元の値と同じ次元となり、値自体の大きさと散らばり具合の大きさを同じ尺度で比較することができる。日本では学力試験のいわゆる偏差値を算出するのに用いられている。
偏差値 ⭐
データ系列の値を、特定の平均値と標準偏差になるよう変換したもの。その値が集団内でどの程度の位置に相当するかを表しており、学力試験の得点を難易度に依らず比較できるようにするために求めることが多い。
もとのデータ系列の平均値と標準偏差を求め、定数AとSを用いて という式で変換した値である。これは平均値がA、標準偏差がSの分布だったら元の値がいくつになるかを表している。
偏差値自体は様々なデータに適用することができるが、日本では高校までの学力試験の得点を偏差値に変換した「学力偏差値」が広く普及している。これは平均(A)が50、標準偏差(S)が10になるように調整した偏差値で、テストの満点の違いや難易度による影響を排して集団内での位置を知る指標として利用されている。外国ではAやSが別の値の偏差値が用いられることもある。例えば、米大学入試で用いられる「SAT」はAが100、Sが500の偏差値を算出する。
算出方法から、偏差値50はちょうど平均値であることを表す。元の値の分布が正規分布に従う場合、偏差値25が下から0.62%、偏差値40が下から15.9%、偏差値60が上から15.9%、偏差値75が上から0.62%の位置にいることを表す。試験などでは概ねこの範囲にほとんどの得点が収まるが、試験が極端に難しいあるいは易しい場合など、結果が正規分布から大きく外れた場合には偏差値も大きく外れた値を取り得る。
分散 ⭐
分かれて散らばること。確率・統計の分野では、データの散らばり具合を分散という。IT分野では処理やデータを複数の機器などで分担することを分散処理、分散システムなどという。
統計学の分散
統計学では、あるデータ群のそれぞれの値について平均値との差を取って二乗し、その合計をデータの数で割って平均した値(二乗平均)を分散(variance)という。データ群が平均に対してどのくらい散らばっているかを表す指標として用いられる。
例えば、{10,20,30} という3つの標本の分散は平均値の20を用いて {(10-20)2+(20-20)2+(30-20)2}/3 と表すことができ、約66.7となる。{0,20,40} であれば約266.7となり、すべて平均に等しい {20,20,20} ならば分散は0となる。
分散は算出過程で値を二乗しており元の値とは次元が異なるが、分散の正の二乗根を取って次元を揃えた値を散らばりの指標として用いることがある。これを「標準偏差」(SD:Standard Deviation)と呼び、元の値と同じ尺度で散らばり具合を評価することができる。
分散処理
IT分野では、一つの処理やデータ群に対して複数の機器を動員し、分担して処理する方式を「分散処理」(distributed processing)、「分散システム」(distributed system)、「分散コンピューティング」(distributed computing)などという。
このうち、処理の前後関係に従って異なる機能の機器を連結し、それぞれが特定の工程に専念する方式を「垂直分散システム」、同じ機能の機器を並べて処理を振り分け、並行に処理する方式を「水平分散システム」という。一般には後者を指して単に分散システムと呼ぶことが多い。
相関係数
2つのデータ系列どの程度強く連動しているかを表す値。-1から1の間の実数で表され、両者の値の変化が正比例の関係に近いほど絶対値が大きくなり、まったく連動していなければ0に近い値となる。
2つの事象に関わりがあり、一方が変化するともう一方も変化するような関係を「相関」という。一方が増えるともう一方が増える関係を「正の相関」、一方が増えるともう一方は減る関係を「負の相関」という。
相関係数は同じ数の2つのデータ系列から算出される統計量の一つで、-1から1の間の実数を取る。値が0ならば両者に相関はなく、1なら完全な正の相関、-1なら完全な負の相関がある。1または-1のときは両者の関係を という形の一次関数として記述することができる。
相関係数は、同数のデータ系列 と から算出した共分散 とそれぞれの標準偏差 および を用いて として求められる。これは平均 と を用いて下記の式のように表される。
<$Fig:correlation-coefficient|center|false>説明変数 【独立変数】
統計学で、ある事象に関与している変数のうち、事象の原因となっている変数のこと。この変数を変化させると、これに追随して結果を表す変数の値が変化する。
ある事象に関与する要素の間に原因-結果という因果関係が認められるとき、原因を表す変数のことを「説明変数」、結果を表す変数を「目的変数」あるいは「従属変数」という。説明変数を変化させると、これに連動して目的変数も変化するという関係にある。
例えば、バネにおもりを吊るす実験を行うと、バネの伸びの長さ(y)は吊るすおもりの重さ(x)によって説明でき、定数aを用いて という一次関数(比例関係)で表されることが分かる。この場合、おもりの重さが説明変数、バネの伸びが目的変数である。
説明変数と目的変数の間の規則性を明らかにすることを「回帰分析」(regression analysis)という。説明変数が一つの場合を「単回帰分析」、複数の場合を「重回帰分析」という。直線的な比例関係を想定して解析することを「線形回帰」あるいは「直線回帰」と呼び、2次関数や指数関数のように直線的でない関係を想定して解析することを「非線形回帰」という。
目的変数 【従属変数】
統計学で、ある事象に関与している変数のうち、事象の結果となっている変数のこと。原因を表す変数を変化させると、これに追随して変化する。
ある事象に関与する要素の間に原因-結果という因果関係が認められるとき、結果を表す変数のことを「目的変数」、原因を表す変数を「説明変数」あるいは「独立変数」という。説明変数を変化させると、これに追従して目的変数も変化するという関係にある。
例えば、バネにおもりを吊るす実験を行うと、バネの伸びの長さ(y)は吊るすおもりの重さ(x)によって説明でき、定数aを用いて という一次関数(比例関係)で表されることが分かる。この場合、おもりの重さが説明変数、バネの伸びが目的変数である。
説明変数と目的変数の間の規則性を明らかにすることを「回帰分析」(regression analysis)という。説明変数が一つの場合を「単回帰分析」、複数の場合を「重回帰分析」という。直線的な比例関係を想定して解析することを「線形回帰」あるいは「直線回帰」と呼び、2次関数や指数関数のように直線的でない関係を想定して解析することを「非線形回帰」という。
回帰分析 ⭐
何かの結果を表す数値があるとき、原因と考えられる数値がどのような形で影響を与えているのか規則性を明らかにすること。因果関係の推定や事象の予測、シミュレーションなどのためによく行われる。
調査などで得られた様々な数値の組み合わせのうち、着目している数値(従属変数)が、他の数値(説明変数)からどのように影響を受けているかを関数の形で明らかにする。説明変数が一つの場合を「単回帰分析」、複数の場合を「重回帰分析」という。
例えば、ある飲食店のビールの売上(y)とその日の最高気温(x)についての記録を単回帰分析したところ、y=ax+c という1次関数の形で表されたとする。この関係が分かれば、天気予報を元に仕入れ量を調整することができる。降水量(z)との関係も合わせて重回帰分析することで、y=ax+bz+c という関係が明らかになれば、より精度の高い予測が可能となる。
この例では説明変数と従属変数が直線的な比例関係で表されることを仮定しており、これを「線形回帰」あるいは「直線回帰」という。物事の関係性は単純な比例関係で表されるとは限らず、x2 のような高次の項を含む多項式、指数関数、対数関数、三角関数などが含まれる場合がある。これを「非線形回帰」という。
統計値などから回帰分析を行う場合、各標本は誤差を含んで一定の範囲にばらついているため、数値計算を繰り返して関数のパラメータ(係数)を推定する。代表的な手法として「最小二乗法」がよく知られ、回帰式から得られる値と各標本の実際の値の誤差を二乗して足し合わせた値が最小になるよう係数を決定する。
相関分析
2つのデータ系列の間にどの程度強い相関が見られるかを調べること。通常は線形相関(比例関係)の強さを調べることを指し、相関係数を求めてその絶対値の大きさから判断する。
2つの事象に関わりがあり、一方が変化するともう一方も変化するような関係を「相関」という。一方が増えるともう一方が増える関係を「正の相関」、一方が増えるともう一方は減る関係を「負の相関」という。
2つの変数がどの程度比例関係(線形相関)に従って連動しているかを表す係数を「相関係数」(correlation efficient)という。同数のデータ系列 と から算出した共分散 とそれぞれの標準偏差 および を用いて として求められる。
相関係数は-1から1の間の実数を取り、0ならば両者に線形相関はなく、1なら完全な正の相関、-1なら完全な負の相関がある。絶対的な評価基準はないが、概ね-0.3~0.3程度であれば両者の間に線形の相関はほぼないと判断され、-0.3~-0.6程度であれば弱い負の相関が、0.3~0.6程度であれば弱い正の相関が、-0.6~-1.0程度ならば強い負の相関が、0.6~1.0程度ならば強い正の相関があると判断される。
なお、相関係数は線形(比例)の関係に従っているかどうかを評価する値であるため、比例関係以外の何らかの非線形な関係性に基づいてきれいに連動していても、相関係数は0近辺(線形相関なし)と判定されることになる。両者の関係性は相関係数だけでなく散布図などをよく見て判断すべきとされる。
ベクタ 【ベクトル】
「方向と大きさ」のように、互いに独立な複数の異なる値の組み合わせとして表される量のこと。それぞれの値が何を意味するかは分野によって異なる。
「ベクトル」表記はドイツ語の “Vektor” に由来し、古くからこの概念を用いている数学や物理学で多く見られる。「ベクター」あるいは「ベクタ」表記は英語の “vector” に由来し、IT分野などで多く見られる。
可変長配列
プログラミングなどの分野では、1次元の配列変数として表現できる、同じ型のデータを一列に並べたデータ構造のことをベクトルと呼ぶ場合がある。これと対比して、単体の値や変数のことは数学の用語にならって「スカラ」(scalar)と呼ぶ場合がある。C++言語やJavaなどでは、要素数を後から増減できる可変長配列を扱うことができるクラスのことをベクトル(vector/Vector)という。
ベクトル演算
並列処理の一種で、一列に並んだ一定の数の複数の値に対して同時に同じ演算を行うことを「SIMD」(Single Instruction Multiple Data)あるいは「ベクトル演算」という。
このような処理に適した論理回路を実装したマイクロプロセッサ(CPU/MPU)を「ベクトル型プロセッサ」、そのようなプロセッサで構成されたコンピュータを「ベクトル型コンピュータ」(ベクトル計算機)という。
かつてはスーパーコンピュータの高速化手法として期待されたが、適用場面が限られプログラミング手法が特殊なことからあまり普及しなかった。現在ではGPU(Graphics Processing Unit)が3次元グラフィックス処理の高速化を行う手法として特定の演算のみをベクトル的に処理する方式が広まっている。
ベクタ画像
画像処理の分野で、画像を点の座標とそれを結ぶ線や面の方程式のパラメータ、および、塗りつぶしや特殊効果などの描画情報の集合として表現する方式を「ベクトル画像」(vector image)、「ベクトルグラフィックス」(vector graphics)などという。
対義語は「ビットマップ」(bitmap)あるいは「ラスタ」(raster)で、これは画像を色のついた点(ピクセル、ドット)を縦横に規則正しく敷き詰めて画像を表現する形式である。
尺度
対象の測定や計量、評価などを行うときの基準。特に、結果を数字に対応付けるための規則を指すことが多い。定規やメジャーなど長さを測る道具を尺度と呼ぶこともある。
尺度水準 (level of measurement)
統計的な変数やその値を、情報の性質に基づいて分類したものを「尺度水準」という。1946年に米心理学者スタンレー・スティーブンズ(Stanley S. Stevens)が提唱した、「名義尺度」「順序尺度」「間隔尺度」「比例尺度」の4段階に分類する考え方が広く普及している。
「名義尺度」(類別尺度)は対象や状態を区別するためだけに(便宜上の)数字を割り当てたもので、値が同じか異なるかしか評価することができない。順序や大きさ、比率などに意味はなく、計算を行うこともできない。例えば、電話番号の国番号は米国が1、日本が81だが、日本が何かの大きさで81位であるとか、何かが米国の81倍であるというわけではない。
「順序尺度」は数字の大小が順序を表すような尺度である。大きさを比較したり順位を付けることができるが、他の値との差や比率には意味がなく、計算を行うことはできない。競技の順位、成績やアンケートなどの5段階評価、検定制度の段位や級などが該当する。「将棋8段は4段より強い」とは言えるが、「2倍強い」といった比較はできない。
「間隔尺度」は数字が順序を表すとともに間隔に意味があるような尺度である。値の差が等しければ同じ間隔が空いていることを意味するが、「0」で表される点は便宜上置いたもので、値の比には意味がない。例えば、摂氏5度が15度になるのと15度が25度になるのは同じ幅だけ温度が上昇したと言えるが、摂氏15度は5度の3倍の温度やエネルギーであるとは言えない。
「比例尺度」(比率尺度)は数字が順序や間隔を表すともに、「0」に原点としての意味があり、値の比や割合も議論することができる尺度である。長さ、重さ、時間、速度、絶対温度などの物理量、金額などが該当する。これらの尺度水準には上下関係があり、名義、順序、間隔、比例の順に水準が高くなる。高い水準の尺度は自身より低い水準の尺度を兼ねている。
名義尺度 【類別尺度】
統計などで用いられる数値データの尺度のうち、対象や状態を区別するためだけに(便宜上の)数字を割り当てたもの。値は順番や順位を意味せず、値の差や比にも意味はない。
統計的な変数やその値を、情報の性質に基づいて分類したものを「尺度水準」という。1946年に米心理学者スタンレー・スティーブンズ(Stanley S. Stevens)が提唱した、「名義尺度」「順序尺度」「間隔尺度」「比例尺度」の4段階に分類する考え方が広く普及している。
名義尺度は最も低い水準の尺度で、数字は対象や状態を識別する名前の役割しか果たさず、量的な意味合いを一切もたない。値が同じか異なるかを見分けるためだけに使用することができ、順序、間隔、大きさ、比率などを表すことはできず、値の計算にも意味がない。統計量としては各値の度数や出現頻度、最頻値などを求めることはできる。
例としては、電話番号や郵便番号、学籍番号、背番号、国際電話の国番号、総務省の都道府県コードなどがある。例えば、都道府県コードで「10」が群馬県、「20」が長野県だが、群馬県が何かで10位であるとか、長野県の何かが群馬県の2倍であるといった意味はない。
順序尺度
統計などで用いられる数値データの尺度のうち、数字の大小が順番や順位を表すようなもの。大小や高低、前後の比較はできるが、値の差や比には意味がない。
統計的な変数やその値を、情報の性質に基づいて分類したものを「尺度水準」という。1946年に米心理学者スタンレー・スティーブンズ(Stanley S. Stevens)が提唱した、「名義尺度」「順序尺度」「間隔尺度」「比例尺度」の4段階に分類する考え方が広く普及している。
順序尺度は名義尺度に次いで2番目に低い水準の尺度で、数字の大小で順序を表すことができる。大きさを比較したり順位を付けることができるが、値同士の差や他の値との比、割合などには意味がなく、値の計算を行うこともできない。統計量としては度数や最頻値に加え、中央値や四分位数、パーセンタイルなどが使用できる。
例としては、競技の順位、成績やアンケートなどの段階評価、検定制度の段位や級、自動車保険の等級、がんのステージ、国際原子力事象評価尺度などが該当する。「将棋8段は4段より強い」とは言えるが、「2倍強い」といった比較はできない。
間隔尺度
統計などで用いられる数値データの尺度のうち、数字の大小が順序を表すと共に、2つの値の差の大きさに意味があるもの。値の比には意味がない。
統計的な変数やその値を、情報の性質に基づいて分類したものを「尺度水準」という。1946年に米心理学者スタンレー・スティーブンズ(Stanley S. Stevens)が提唱した、「名義尺度」「順序尺度」「間隔尺度」「比例尺度」の4段階に分類する考え方が広く普及している。
間隔尺度は比例尺度についで2番目に高い水準の尺度で、数字の間隔が量の大きさを表すような尺度である。値の差が等しければ同じ間隔が空いていることを意味するが、「0」で表される点は量が0になる原点ではなく便宜上置いたものである。値自体の比には意味がないが、値の差同士の比には意味がある。統計量としては最頻値や中央値、パーセンタイルなどに加え、平均値(相加平均)や標準偏差、相関係数なども使うことができる。
例としては、温度の摂氏(℃)や華氏、西暦や元号で表した年、日付などがある。15℃が20℃になるのと20℃が30℃になるのでは2倍の温度上昇が生じたと言うことができるが、15℃が30℃になったのを温度が2倍に上昇したと言うことはできない。
比例尺度 【比率尺度】
統計などで用いられる数値データの尺度のうち、数字が順序や間隔を表すともに、値の比や割合も議論することができるもの。
統計的な変数やその値を、情報の性質に基づいて分類したものを「尺度水準」という。1946年に米心理学者スタンレー・スティーブンズ(Stanley S. Stevens)が提唱した、「名義尺度」「順序尺度」「間隔尺度」「比例尺度」の4段階に分類する考え方が広く普及している。
比例尺度は最も高い水準の尺度で、数字がそのまま何らかの量の大きさを表している。値の「0」は「存在しない」ことを表す原点であり、値の間隔や比には意味がある。加減乗除などの計算も行うことができ、すべての統計量を使うことができる。
例としては、長さや面積、体積、重さ、時間、速度、絶対温度などの物理量、金額、個数などが該当する。一段階低い水準の間隔尺度である摂氏では27℃が54℃になったからといって温度が2倍になったとは言えないが、絶対温度600K(約327℃)は300K(約27℃)の2倍の温度と言うことができる。
ノード
節、結節(点)、節点、交点、中心点、集合点、こぶ、膨らみ、などの意味を持つ英単語。ITの分野ではネットワーク構造の構成要素などをこのように呼ぶ。
ネットワーク構造や木構造(ツリー)、グラフなど、複数の要素が結びついてできた構造体において、個々の要素のことをノードという。ノードを結びつける線や繋がりは「エッジ」(edge)あるいは「リンク」(link)という。
木構造のノード
頂点から枝分かれしていく形の木構造では、頂点の要素を「根ノード」(root node:ルートノード)、末端の要素を「葉ノード」(leaf node:リーフノード)という。
また、結ばれた2つのノードのうち、より根に近いものを「親ノード」(parent node)、葉に近いものを「子ノード」(child node)という。中間の要素のみをノードと呼び、根や葉はノードとは呼ばない場合もある。
通信ネットワークのノード
通信ネットワークでは、コンピュータや通信機器など、通信の主体となる個々の機器のことをノードという。信号やデータを送信、受信、転送する機能を持ち、通信に対して何らかの能動的な役割を果たす機器などを指す。単純な信号の中継や再送信など受動的な機能のみの器具は含まれない。
何をノードとみなすかは機能階層によって異なり、リンク層(L2)であればネットワークスイッチなどがノードを構成するが、同じネットワークでもネットワーク層(L3)ではスイッチは透過的な通信インフラとなり、代わってルータなどがノードとなる。
分散システムの場合はシステム全体の構成要素となる独立した処理機能を持つコンピュータなどをノードという。
エッジ
境界、端、へり、ふち、尾根、瀬戸際、接線、刃、鋭さ、優位、研ぐ、縁取る、などの意味を持つ英単語。IT分野では、基板の端の部分や通信ネットワークの末端部などを表すことが多い。
基板の端
基板やカードなど板状の部品や装置の端の部分のことをエッジということがある。この部分に金属端子を規則正しく並べて外部との接点としたものを「エッジコネクタ」(edge connector)という。
ネットワークエッジ
通信ネットワークのうち、外部のネットワークとの境界部分や、端末などが接続され、それ以上先が無い末端部分のことを「ネットワークエッジ」(network edge)あるいは単にエッジという。ネットワークの中心部のことは「コア」(core:核)という。
エッジ部とコア部や外部ネットワークを繋ぐ通信機器を「エッジルータ」(edge router)、「エッジスイッチ」(edge switch)のように呼ぶ。また、この領域に設置・運用されるサーバコンピュータを「エッジサーバ」(edge server)と呼ぶことがある。
Microsoft Edge
米マイクロソフト(Microsoft)社がWindows 10で新たに採用したWebブラウザを「Microsoft Edge」という。略して「Edge」(エッジ)と呼ばれることが多い。
従来の「Internet Explorer」(インターネット・エクスプローラ)に代わってWindowsの標準Webブラウザとして開発されたソフトウェアで、macOS版やLinux版、iOS版、Android版も提供されている。2022年のInternet Explorer完全廃止(サポート終了)後は唯一の標準ブラウザとなっている。
Explorerに比べ各種のWeb標準規格への対応が進んだほか、2020年以降のバージョンではオープンソースのWebブラウザ「Chromium」(クロミウム)をベースとした設計に刷新され、同じChromiumベースの「Goole Chrome」などと似た表示・操作体系となっている。
キュー 【待ち行列】 ⭐⭐
最も基本的なデータ構造の一つで、要素を入ってきた順に一列に並べ、先に入れた要素から順に取り出すという規則で出し入れを行うもの。窓口などの順番を待つ人の行列をモデル化したものとも言える。
待ち行列は先頭が常に最も古い要素になるデータ構造で、新しい要素は必ず末尾に追加される。取り出すときは常に先頭の最も古い要素から取り出される。このように先に入れたものほど先に取り出される管理方式を「FIFO」(First-In First-Out:先入れ先出し)という。
実装上は、待ち行列のために確保された記憶領域の中ですべての要素が到着順に並ぶとは限らず、実際の位置や順序とは別に到着順や末尾の位置などの情報を内部的に記録・管理する手法が用いられることが多い。人間の行列のように要素が取り出されるたびに残りのすべての要素の物理的な位置を隣(一つ前)に移動させるのは非効率だからである。
バリエーションとして、列の両端から要素の追加や取り出しを行える「両端キュー」(double-ended queue)や、追加する要素に優先度を設定して、優先度の高いものから取り出すようにする「優先度付きキュー」(priority queue)などがある。
一方、「先に足された要素ほど後に取り出される」(末尾から順に取り出す)という規則で要素の出し入れを管理するデータ構造は「スタック」(stack)と呼ばれる。そのような管理方式を「LIFO」(Last-In First-Out:後入れ先出し)あるいは「FILO」(First-In Last-Out:先入れ後出し)という。
要素の出し入れ
待ち行列に要素を追加する操作を「エンキュー」(enqueue)、取り出す操作を「デキュー」(dequeue)という。エンキューされた要素は待ち行列の末尾に追加され、キューの要素数は1増加する。
デキューを指示すると待ち行列の先頭の要素が取り出され、その要素はキューから取り除かれる。先頭から2番目にあった要素(2番目に古かったデータ)が新しい先頭になり、キューの要素数は1減少する。
キューイング (queuing/queueing)
待ち行列を用いて要素の管理を行うことを「キューイング」(queuing)という。キューイングは機器間やプログラム間など独立に動作する二つの主体の間で非同期にデータの受け渡しを行う手法としてよく用いられる。システム間で汎用的にデータを受け渡しするシステムを「メッセージキュー」(message queue)という。
例えば、コンピュータからプリンタにデータを伝送する速度とプリンタがデータを紙に印刷する速度では、後者のほうが圧倒的に遅い。伝送と印刷を同時に行おうとするとコンピュータ側はほとんどの時間待たされることになり無駄であるため、印刷データを一旦待ち行列に保管し、プリンタの処理の進み具合に応じて専用の制御プログラムが少しずつデータを伝送する手法が用いられる。
最適化問題
ある関数を特定の条件下で最大あるいは最小とする解を求める問題。現実の何らかの問題について望ましさを表す関数を定義し、最も望ましい状態になるのはいつかを調べる問題である。
例えば、関数 ƒ(x) = x2-2x+3 について x>0 における最小値を求める、といったように定式化できる問題を指す。このとき、対象となる関数を「目的関数」、変数について課される条件を「制約条件」あるいは「制約関数」という。
この例では x=1 のとき ƒ(x)=2 となり最小となる。ƒ(x)=2 をこの問題における最適値と呼び、これを与える x=1 を最適解という。最大を求める問題と最小を求める問題を区別して、最大値および最大解、最小値および最小解と呼び分ける場合もある。
変数が連続的に変化するような関数の最適値を求める問題は「連続最適化問題」と呼ばれ、目的関数が一次式で表される線形計画問題などが含まれる。一方、変数が離散的な値しか取らないような問題は「離散最適化問題」あるいは「組み合わせ最適化問題」と呼ばれ、情報科学の有名な問題である最短経路問題、ナップサック問題、巡回セールスマン問題、エイトクイーン問題などはこちらに含まれる。
ビット ⭐
情報量の最小単位で、二つの選択肢から一つを特定する情報の量。コンピュータなどでは0と1のいずれかを取る二進数の一桁として表される。
語源は “binary digit” (二進法の数字)を繋げて省略した表現と言われる。情報をすべてビット列に置き換えて扱うことを「デジタル」(digital)という。1ビットのデータが表す情報量は、投げたコインの表裏のように、二つの状態のいずれであるかを示すことができる。
複数のビットを連ねて一つのデータとすることで、2ビットなら4状態(22)、3ビットなら8状態(23)といったように、より多い選択肢を識別できる。一般に、nビットのデータは2のn乗個までの選択肢からなる情報を表現することができる。
例えば、大文字のラテンアルファベットは「A」から「Z」の26文字であるため、これを識別するのには4ビット(16値)では足りず、5ビット(32値)が必要となる。小文字を加えると52文字であるため、6ビット(64値)が必要となる。
派生単位
データの読み書きや伝送を行う場合、その速さを表す単位として1秒あたりの伝送ビット数であるビット毎秒(bps:bit per second)という派生単位が用いられる。
また、実用上はビットでは値が大きくなりすぎて不便なことも多いため、8ビットをまとめて一つのデータとした「バイト」(byte)という単位を用いる場面も多い。かつて何ビットを1バイトとするか機種により様々に分かれていた(7ビットバイトや9ビットバイトなどが存在した)名残りで、8ビットの集まりを「オクテット」(octet)とも呼ぶ。
倍量単位
大きな量を表す際には、SI単位系に則って接頭辞を付した倍量単位を用いる場合がある。
- 1000ビットを「キロビット」(kbit:kilobit)
- 100万ビットを「メガビット」(Mbit:megabit)
- 10億ビットを「ギガビット」(Gbit:gigabit)
- 1兆ビットを「テラビット」(Tbit:terabit)
- 1000兆ビットを「ペタビット」(Pbit:petabit)
- 100京ビットを「エクサビット」(Ebit:exabit)
という。また、コンピュータでは2の冪乗を区切りとするのが都合が良いことが多いため、独自の接頭辞を付した倍量単位が用いられることもある。
- 210(1024)ビットを「キビビット」(Kibit:kibibit)
- 220(約104万)ビットを「メビビット」あるいは「ミービビット」(Mibit:mebibit)
- 230(約10億7千万)ビットを「ギビビット」(Gibit:gibibit)
- 240(約1兆1千億)ビットを「テビビット」あるいは「ティービビット」(Tibit:tebibit)
- 250(約1126兆)ビットを「ペビビット」あるいは「ピービビット」(Pibit:pebibit)
- 260(約115京)ビットを「エクスビビット」あるいは「イクシビビット」(Eibit:exibibit)
という。この2進専用の接頭辞はIEC(国際電気標準会議)が標準化しており、一般にはあまり馴染みがないが記憶容量の表記などで用いられることがある。
バイト ⭐
情報量の単位の一つで、8ビットのこと。数としては2進数を8桁並べたものに相当し、2の8乗で256種類の異なる状態を表現することができる。
情報量の最小の単位である「ビット」(bit)は2つの状態(0と1、オンとオフなど)を識別できるが、バイトは8ビットをまとめて一つの単位としたもので、各ビットの状態の組み合わせで256の状態を識別することができる。
単位として数値の後に付ける際にはアルファベット大文字の「B」が用いられるが、ビットを小文字の「b」で表すことが多いため、両者の混同を避けるために「byte」あるいは「bytes」と省略せずに(同様にビットは「bit」「bits」)記すことも多い。通信速度を表す場合は1秒あたりに伝送可能なバイト数を「バイト毎秒」という単位で表す。記号は「B/s」または「Bytes/s」を用いる。
接頭辞付きの単位
大きな量を表す場合はSI単位系に定められた接頭辞を付加し、1,000倍あるいは1,024倍ごとにキロバイト(KB:kilobyte)、メガバイト(MB:megabyte)、ギガバイト(GB:gigabyte)、テラバイト(TB:terabyte)などの単位を用いる。接頭辞は他の物理量のように1,000の累乗倍を表す場合と、情報処理の分野で切りの良い1,024(2の10乗)の累乗倍を表す場合があり、混乱が生じている。
IEC(国際電気標準会議)では1,024倍を表す場合は「KiB」(kibibyte、キビバイト)、「MiB」(mebibyte、メビバイトまたはミービバイト)、「GiB」(gibibyte、ギビバイト)、「TiB」(tebibyte、テビバイトまたはティービバイト)など専用の接頭辞を用いるよう提唱しているが、現状ではあまり定着していない。
nビットバイトとオクテット
もともと1バイトが何ビットか明確な定義はなく、機種や処理系によって都合の良いビット数が割り当てられていた。1バイトをnビットで表すことを「nビットバイト」と呼び、1980年代頃までは「6ビットバイト」や「7ビットバイト」など、8ビット以外のバイトを単位とするコンピュータもあった。
このようなバイトの定義の曖昧さを避けるため、必ず8ビットを表す単位として「オクテット」(octet)が用いられることがある。通信プロトコルの仕様書のように、機種や処理系の違いを超えて共通して利用される可能性がある文脈では、古い時代の名残りで現在でもバイトと言わずにオクテットが好まれる場合がある。
なお、現代では歴史的な文脈以外で8ビット以外のバイトが用いられることはなくなったため、2008年に国際電気標準会議(IEC)がIEC 80000-13規格の改訂版で正式に1バイトを8ビットであると定義した。
SI接頭語 【SI prefix】 ⭐⭐
国際的な単位の標準体系であるSI単位系で、桁数の長い大きな数や小さな数を簡潔に書き記すため、単位名の先頭に付け加える語。「センチメートル」の「センチ」などのことで、元の単位を何倍したものかを表す。
100倍、100分の1倍など10の累乗倍を表しており、1000倍と1000分の1倍までは1桁ごとに、以降は3桁ごとに定められている。「キロ」(kilo-)のような接頭語そのものと、「k」のように単位として記載するときに使う記号(接頭語記号)が定められている。
日常生活で馴染み深いのは、1000倍の「キロ」(kilo-/記号k)、100分の1倍の「センチ」(centi-/記号c)、1000分の1倍の「ミリ」(milli-/記号m)、100倍の「ヘクト」(hecto-/記号h)などである。10倍の「デカ」(deca-/記号da)、10分の1倍の「デシ」(deci-/記号d)などは省略できる桁数が少ないため日常的にはあまり用いられない。
工業や科学技術などでは、周波数のような巨大な数を扱うために、100万倍の「メガ」(mega-/記号M)、10億倍の「ギガ」(giga-/記号G)、1兆倍の「テラ」(tera-/記号T)などを、微小な世界の現象を扱うために100万分の1倍の「マイクロ」(micro-/記号μ)、10億分の1倍の「ナノ」(nano-/記号n)、1兆分の1倍の「ピコ」(pico-/記号p)などを用いることがある。
IT分野の接頭語
IT分野ではデータ量(ビットやバイト)やデータ伝送速度(ビット毎秒やバイト毎秒)で大きな数を扱うことが多く、「メガビット毎秒」(Mbps)や「テラバイト」(Tbytes)のようにキロ、メガ、ギガ、テラなどのSI接頭語を頻繁に用いる。
コンピュータは数値を2進数で扱うため、数の区切りとして2の累乗の方が都合が良いことが多く、かつては1024(210)倍をキロと呼ぶなど、210倍ごとに接頭語を運用することがあった。
しかし、本来の接頭語とどちらの大きさを表しているのか分からず、正確に値を伝えるのが困難になってしまうことから、IEC(国際電気標準会議)では1024倍ごとの接頭語に独自の名前と記号を定義し、SI接頭語は10の累乗以外の意味では使わないよう求めている。
新たに定められた2の累乗ごとの接頭語は、最も近いSI接頭語の名前と「binary」(バイナリ:2進数の)を組み合わせた名前となっており、記号には「i」を追加する。例えば、210倍は「キロバイナリ」を略した「キビ」(kibi-/記号ki)、220倍は「メガバイナリ」を略した「メビ」あるいは「ミービ」(mebi-/記号Mi)、230倍は「ギガバイナリ」を略した「ギビ」(gibi-/記号Gi)といった具合である。
キロ
単位の大きさを表すSI接頭語の一つで、基本単位の1000倍(103倍)であることを表すもの。国際単位系(SI)の一環として定められている。
「キロメートル」(km、1000メートル)、「キログラム」(kg、1000g)など日常生活でよく用いられる接頭辞である。厳密には正しくないが、日常的には文脈上単位が明らかな場合に単位そのものとして用いられることもある。例えば、距離の話題で「1キロ」と言えば1キロメートルを表し、重さの話題で「1キロ」といえば1キログラムを表す。
ITの分野では、ビットの1000倍を表す「キロビット」(kb:kilobit)や、バイトの1000倍を表す「キロバイト」(kB:kilobyte)などの単位が用いられる。また、俗に、西暦2000年(Year 2000)を「Y2K」と表記するなど、単位以外でも「1000」を「K」で置き換えた表現を用いることがある。
キロとキビ
コンピュータで量を扱う際には10の累乗より2の累乗の方が都合が良いことがあるため、情報量を表す場合などにキロを210倍(1024倍)とする場合もある。IEC(国際電気標準会議)ではそのような場合はキロの代わりに「Ki」(kibi:キビ/kilo-binaryの略)という接頭辞を用いるよう勧告している。例えば、1024バイトは「1KiB」(1キビバイト)となる。
メガ
単位の大きさを表すSI接頭語の一つで、基本単位の100万倍(106倍)であることを表すもの。国際単位系(SI)の一環として定められている。転じて、「巨大な」「大規模な」といった意味を付加する英語の接頭辞としても用いられる。
長さや重さといった日常よく用いる単位では100万のような大きな値を扱うことは少なく、巨大な数はSI単位ではなく分野固有の専門的な単位を用いることが多い(天文関連など)ため、大きな値も基本単位を元に表すIT分野で馴染み深い接頭辞である。
例えば、100万ビットを表す「メガビット」(Mbit:megabit)、100万バイトを表す「メガバイト」(MB:megabyte)、これらを用いて通信速度を表す「メガビット毎秒」(Mbps:megabits per second)、「メガバイト毎秒」(MB/s:megabytes per second)、周波数を表す「メガヘルツ」(MHz:megaherz)などの単位がよく用いられる。
これらの単位は、文脈からどれを指すのか絞られる場合は慣用的に単位自体を「メガ」の略称で表すことがある(厳密には誤り)。例えば、通信速度の議論で「100メガ」と略せば100Mbpsを、データ容量の議論で「100メガ」と略せば100メガバイトを、半導体の特性や動作について「100メガ」と略せば100MHzを、それぞれ表すことが多い。
メガとメビ
コンピュータで量を扱う際には10の累乗より2の累乗の方が都合が良いことがあるため、情報量を表す場合などにメガを220倍(約105万倍)とする場合もある。IEC(国際電気標準会議)ではそのような場合はメガの代わりに「Mi」(mebi:メビあるいはミービ/mega-binaryの略)という接頭辞を用いるよう勧告している。この場合、220バイトは「1MiB」(1メビバイト)と表記・呼称する。
ギガ
単位の大きさを表すSI接頭語の一つで、基本単位の10億倍(109倍)であることを表すもの。国際単位系(SI)の一環として定められている。また、転じて、「巨大な」「大規模な」といった意味を付加する英語の接頭辞としても用いられる。
ITの分野では、周波数の単位であるHz(ヘルツ)の10億倍を表す「GHz」(ギガヘルツ)、データ量の単位であるビットの10億倍を表す「ギガビット」(Gb:gigabit)やバイトの10億倍「ギガバイト」(GB:gigabyte)、通信速度の毎秒1ギガビットを表す「Gbps」(Gigabit per second)や毎秒1ギガバイト「GB/s」(Gigabyte per second)などの単位が用いられる。
文脈によってはこれらの単位を「ギガ」と略す場合もあり、従来は「このCPUは3.2ギガだ」(GHzの意)、「このハードディスクは640ギガだ」(ギガバイトの意)、「この光ファイバー回線は1ギガだ」(Gbpsの意)などの用法がよく聞かれた。
2015年頃からスマートフォンなどによる携帯電話回線(モバイルデータ通信)を介した動画視聴が広く普及すると、携帯電話会社の定める伝送容量制限(1か月あたり数ギガバイト)が強く意識されるようになり、若者を中心にモバイル回線のデータ伝送量(およびその上限)を「ギガ」を呼ぶ用法が広まった。「ギガが減る」「ギガが足りない」などはこの意味である。
なお、ギガの1000倍、すなわち1兆倍を表す接頭辞は「テラ」(tera)、ギガの1000分の1、すなわち100万倍を表す接頭辞は「メガ」(mega)という。いずれもギガと同様、周波数やデータ量、通信速度などの単位によく用いられる。
ギビ (gibi)
コンピュータで量を扱う際には10の累乗より2の累乗の方が都合が良いことがあるため、情報量を表す場合などにギガを230倍(10億7374万1824倍)とする場合もあるが、IEC(国際電気標準会議)ではそのような場合はギガではなく“ gibi-” (ギビ)という接頭辞を用いるよう勧告している。
テラ
単位の大きさを表すSI接頭語の一つで、基本単位の1兆倍(1012倍)であることを表すもの。国際単位系(SI)の一環として定められている。
長さや重さといった日常よく用いる単位では1兆のような大きな値を扱うことは少なく、巨大な数はSI単位ではなく分野固有の専門的な単位を用いることが多い(天文関連など)ため、大きな値も基本単位を元に表すIT分野で馴染み深い接頭辞である。
ITの分野では、データ量についてバイト(byte)の1兆倍を表す「テラバイト」(TB:terabyte)や、通信速度についてビット毎秒(bps)の1兆倍を表す「テラビット毎秒」(Tbps:terabits per second)、周波数についてヘルツ(Hz)の1兆倍を表す「テラヘルツ」(THz:terahertz)などがよく用いられる。# テラとテビ
コンピュータで量を扱う際には10の累乗より2の累乗の方が都合が良いことがあるため、情報量を表す場合などにテラを240倍(約1兆100億倍)とする場合もある。IEC(国際電気標準会議)ではそのような場合はテラの代わりに「Ti」(tebi:テビあるいはティービ/tera-binaryの略)という接頭辞を用いるよう勧告している。この場合、240バイトは「1TiB」(1テビバイト)と表記・呼称する。
ペタ
単位の大きさを表すSI接頭語の一つで、基本単位の1000兆倍(1015倍)であることを表すもの。国際単位系(SI)の一環として定められている。
長さや重さといった日常よく用いる単位では1000兆のような大きな値を扱うことは少なく、巨大な数はSI単位ではなく分野固有の専門的な単位を用いることが多い(天文関連など)ため、大きな値も基本単位を元に表すIT分野で馴染み深い接頭辞である。
ITの分野では、巨大なシステムなどのデータ量についてバイト(byte)の1000兆倍を表す「ペタバイト」(PB:petabyte)や、スーパーコンピュータなどの計算速度についてFLOPS(フロップス)の1兆倍を表す「ペタフロップス」(PFLOPS:peta-FLOPS)、などがよく用いられる。
ペタとペビ
コンピュータで量を扱う際には10の累乗より2の累乗の方が都合が良いことがあるため、情報量を表す場合などにペタを250倍(1125兆8999億684万2624倍)とする場合もある。
IEC(国際電気標準会議)ではそのような場合はペタの代わりに “peta-binary” を略した「Pi」(pebi:ペビあるいはピービ)という接頭辞を用いるよう勧告している。この場合、250バイトは「1PiB」(1ペビバイト)と表記・呼称する。
アナログ ⭐
機械で情報を扱う際の表現方法の一つで、情報を電圧の変化など連続的な物理量の変化に対応付けて表現し、保存・伝送する方式のこと。元の情報を高精度に表現することができるが、伝送や複製の際に劣化・変質を避けられない。
対義語は「デジタル」(digital)で、情報を離散的な数値に変換し、段階的な物理量として表現する。アナログで情報を扱う利点として、デジタル化では避けられない離散化に伴なう本来の信号からのズレ(量子化誤差)が生じないという点があり、情報の発生時点では正確に表現して記録することができる。
一方、保存や伝送、再生、複製に際して劣化やノイズによる影響を受けやすく、変化した情報は復元することができないため、伝送・複製を繰り返したり長年に渡って保存すると内容が失われたり変質してしまう難点がある。
かつて音楽の販売に用いられたレコード盤は、樹脂表面に刻まれた溝の凹凸の変化が音声信号の変化に直接対応付けられたアナログ記録方式だったが、コンパクトディスク(CD)では音声信号をサンプリング(標本化)して離散的な数値の列に変換し、これを表面の溝の凹凸にデジタル信号として記録している。
機器などの内部的にはデジタル処理が行われていても、人間には連続的に感じられる多段階の値で量を識別するような方式を便宜上アナログと呼ぶ場合がある。例えば、ゲーム機のコントローラの種類の一つで、方向の指示を多段階に滑らかに変化させられるものをアナログコントローラという。
1990年代頃までは、コンピュータなどによる情報のデジタル処理は限られた用途にのみ用いられてきたが、半導体チップやデジタル機器の性能向上や低価格化により、現代では身近な情報の多くがデジタル方式で保存、加工、伝送されるようになってきている。
比喩や誤用
コンピュータやデジタル方式の情報機器、通信サービスなどが普及するに連れ、旧来の機器や仕組み、考え方などを比喩的にアナログと称するようになった。
そのような用例の多くは情報の表現形式のデジタル・アナログとは無関係で、単に「コンピュータやインターネットによらない」という意味だったり、さらには「電気機械を使わない」ことを表していたりする。
中には本来の語義では誤用と思われる用例もある。例えば、ビデオゲームと対比してカードゲームやボードゲームを「アナログゲーム」と呼んだり、パソコンや電卓と対比してそろばんを「アナログな計算方法」と評することがあるが、これらが扱う情報は離散的な数値であり、電気機械を使っていないだけで情報の取り扱い方自体はデジタル的である。
デジタル 【ディジタル】 ⭐
機械で情報を扱う際の表現方法の一つで、情報をすべて整数のような離散的な値の集合として表現し、段階的な物理量に対応付けて記憶・伝送する方式のこと。特に、情報を2進数の「0」と「1」の組み合わせに置き換えて表現する方式。
現代のコンピュータはデータをすべて2進数の値の列に置き換え、これをスイッチのオン・オフや電圧の高低など明確に区別できる2状態の物理量に対応させて保存・伝送する。これに合わせて、通信回線や記憶媒体などもデジタル方式で情報を取り扱うようになっている。
対義語は「アナログ」(analog)で、情報を連続した物理量で表現する方式を意味する。初期の情報機器はアナログテレビ放送や音楽レコードのようにアナログ方式で情報を記録・伝送していたが、現代ではコンピュータの普及に合わせて動画配信やCDのようにデジタル方式への置き換えが進んでいる。
デジタルで情報を扱う利点として、保存や伝送、再生、複製などを行う際に劣化やノイズの影響を受けにくく、伝送・複製を何度繰り返しても内容が変化しない点や、様々な種類の情報を数値の集合として同じように扱うことができ、情報の種類によって媒体の選択に制限を受けない点などがある。ただし、連続的に変化する信号を離散値に変換する際に、必ず本来の信号からのズレ(量子化誤差/標本化誤差)が生じる。
機器などの内部的にはデジタル処理が行われていても、人間には連続的に感じられる多段階の値で量を識別するような方式を便宜上アナログと呼ぶ場合がある。例えば、ゲーム機のコントローラの種類の一つで、方向の指示を多段階に滑らかに変化させられるものをアナログコントローラという。
比喩や誤用
コンピュータやデータ通信、デジタル方式の記憶媒体などが普及するに連れ、「デジタル」という語をコンピュータやインターネットに関連するものの総称、「アナログ」をその逆、すなわち「電気・電子技術に依らないもの」とする比喩的な用法が広まった。
このような用例の多くは本来の情報の表現形式の違いとは無関係に用いられるため、カードゲームやボードゲームなどをビデオゲームに対比して「アナログゲーム」と呼んだり、そろばんを計算機と対比して「アナログな計算方法」と呼んだりするが、これらは離散的な数値しか扱わないため、情報の扱い方そのものはデジタル的である。
デジタル化 ⭐⭐
物事の仕組みや手段にコンピュータや通信ネットワークなどのデジタル技術を取り入れること。または、アナログ信号をデジタルデータに変換すること(A/D変換)。
パソコンやスマートフォンなどの電子機器、構内ネットワーク(LAN)やインターネットなどのコンピュータネットワーク、Webサイトやネットサービスなどを駆使し、情報の作成や取得、保管、加工、伝送をデジタルデータの状態で行うようにする。
ビジネスや何らかの組織的な活動についてデジタル化という場合、その目的やデジタル技術の活用度合いなどに応じて何段階かに分類される。一般的にはアナログに近い方から順に「デジタイゼーション」(digitization)、「デジタライゼーション」(digitalization)、「デジタルトランスフォーメーション」(digital transformation)の3段階に整理することが多い。
デジタイゼーション (digitization)
情報の形態や形式を紙面などの物体やアナログ形式からコンピュータ上のファイルなどデジタル形式に置き換えることを「デジタイゼーション」(digitization)という。
例えば、書類をイメージスキャナで取り込んで画像ファイルやPDF文書などに変換して保存したり、FAXや郵便の代わりに電子メールを導入することなどが該当する。情報の保管や伝送がデジタル技術に置き換わり効率化やコスト削減などを進める効果はあるが、ビジネスの仕組みや業務手順などはアナログ時代と特に変わらない。
デジタライゼーション (digitalization)
単なるデジタルへの置き換えに留まらず、業務プロセスをデジタル技術を前提としたものに変革することを「デジタライゼーション」(digitalization)という。
例えば、製品をECサイトで販売したり、書類の伝票を挟まずにシステム間の通信で受発注を行ったり、蓄積したデータを解析ツールなどで分析し、企画や意思決定などに反映させることなどが該当する。アナログ時代には不可能だったようなこともできるようになり、事業や製品の様態も大きく変革される。
デジタルトランスフォーメーション (DX)
デジタライゼーションを更に推し進め、業務手順などに留まらず事業の仕組みや製品、組織の在り方などをデジタルに合わせて根本的に作り直すことを「デジタルトランスフォーメーション」(DX:Digital Transformation)という。
例えば、映画やテレビ番組のような動画コンテンツを制作して定額でネット配信する動画配信サービス、CDやダウンロード販売に代わって楽曲を定額聴き放題で提供する音楽ストリーミングサービス、通信端末で利用するキャッシュレス決済サービスなどは、既存のビジネスの仕組みやインフラを前提とせず、デジタルで完結する新しいモデルで事業を展開している。
量子化
アナログ信号などの連続量を整数などの離散値で近似的に表現すること。自然界から取り込んだ信号などをコンピュータで処理・保存できるようデジタルデータに置き換える際などによく行われる。
音や光、電気、電波など物理現象に伴う信号は本来連続量であるため、そのままではコンピュータなどの電子回路で取り扱うことができない。そこで、一定の決まった間隔で信号の強度を測定(標本化/サンプリング)し、決まった細かさの段階に当てはめて表していく。
例えば、4段階の値で量子化を行う系では、信号強度の測定値(標本)は0、1/3、2/3、1の中から最も近い値が選ばれる。0.1に近い標本は0、0.4に近い標本は1/3といった具合である。この段階の数が多いほど元の信号をより高い精度で忠実に表現することができるが、量子化後のデータ量はその分だけ増大する。
この細かさをビット数で表したものを「量子化ビット数」と呼び、これが1ビットであれば2段階(21)、8ビットならば256段階(28)、16ビットならば65,536段階(216)の細かさで強度を表現できる。
サンプリング 【標本化】
対象全体の中から何らかの基準や規則に基いて一部を取り出すこと。統計調査などで少数の調査対象を選び出すことや、信号のデジタル化などで一定周期で強度を測定することなどを指す。
アナログ信号のサンプリング
信号処理の手法の一つで、アナログ信号などの連続量の強度を一定の時間間隔で測定し、観測された値(標本値)の列として離散的に記録することを標本化ということが多い。デジタルデータとして記録したい場合は、値を整数などの離散値で表す「量子化」(quantization)処理が連続して行われる。
測定の間隔を「標本化周期」(sampling cycle:標本化周期)、その逆数である測定の頻度(単位時間あたりの回数)を「標本化周波数」(sampling frequency:標本化周波数)という。頻度の多寡は通常標本化周波数で表現され、単位として1秒あたりの回数を表す「Hz」(ヘルツ)が用いられる。
例えば、音声を44.1kHz(キロヘルツ:Hzの1000倍)で標本化する場合、音声信号の強度を毎秒4万4100回記録し、音声データを1秒あたり4万4100個の数値の列として表現する。44.1kHzは人間の可聴音をほぼカバーする周波数とされ、CD(コンパクトディスク)などの音声記録に用いられている。
統計・調査におけるサンプリング
統計や調査などの分野では、調査したい母集団全体を対象とすることが困難な場合に、集団を代表する少数の標本を抽出して対象とし、その結果から統計的に母集団の性質を推計する手法を標本化という。製品の出荷時検査や社会調査などで広く用いられ、標本から母集団の推定値を算出する方法や偏りのない標本の抽出方法などについて様々な手法が提唱されている。
音楽におけるサンプリング
音楽の分野では、楽曲の制作手法の一つで、既存の楽曲や何らかの音源からメロディや歌詞、あるいは音声そのものの断片を抽出し、引用したり繋ぎ合わせる技法を標本化という。また、録音した楽器の音や環境音、人や動物の声などを短い単位に分解し、再構成して楽曲に仕上げる手法のことを標本化ということもある。
エンコード 【符号化】
ある形式の情報を一定の規則に従って別の形式に変換すること。元の形式に復元可能な状態に変換することを指し、データ圧縮や暗号化、文字コードの変換などが該当する。
ある形式のアナログ信号やデジタルデータを特定の形式の符号(code)に置き換える操作を指す。得られた符号列に逆方向の変換を行って元の状態に戻す操作は「デコード」(decode)という。デコードによって符号化前の状態を復元することができるが、非可逆圧縮など完全に元の状態には戻せない方式もある。
例えば、動画データは極めてデータ量が大きいため、符号化処理によってデータの間引きや圧縮を行い、短い符号列に置き換えてから保存や伝送を行う。圧縮されたデータはそのままでは再生できないため、再生時にはデコード処理によって元のデータを取り出してから表示を行う。
ある方式の符号化処理を行う装置やソフトウェアを「エンコーダ」(encoder)、その方式でデコード処理を行うものを「デコーダ」(decoder)という。音声の録音と再生、映像の録画と再生など、状況に応じてどちらも行う可能性がある場合には、両者を一体化した「コーデック」(codec:encoder-decoder)を用いる。
A/Dコンバータ 【ADC】
アナログ信号をデジタル信号に変換する電子回路。連続量であるアナログ信号の強度を一定時間ごとに記録(標本化/サンプリング)し、その値を一定のビット数の値で表現(量子化)する。
単位時間あたりの標本化の回数をサンプリング周波数(サンプリングレート)と呼び、毎回の標本データを表現する値のビット数を量子化ビット数という。これらの値が大きいほどアナログ波形をより正確にデジタルデータの集合として記録できるが、単位時間あたりの記録に必要なデータ量は増大する。
音声や光(画像・映像)、電気信号、電波などを電子機器に取り込んでデジタル処理するためには、センサーやアンテナなどが得たアナログ信号をA/D変換でデジタルデータに変換する必要があり、様々な機器の内部に内蔵されている。
A/D変換とは逆に、デジタル信号を元にアナログ信号を生成する電子回路のことをDAC(D/Aコンバータ、デジタルアナログ変換器)という。
文字コード 【キャラクターコード】 ⭐⭐⭐
文字や記号をコンピュータ上でデータとして扱うために、一文字ずつ固有の識別番号を与えて区別できるようにした符号のこと。
コンピュータはすべての情報を「0」と「1」のを組み合わせたデジタルデータとして取り扱う。数値は2進数を用いることで容易に表現できるが、文字は字形そのものを画像や図形としてデータ化したものはデータ量が多く、これをそのまま繰り返し並べて文字データとすることは無駄が大きい。このため、各文字に短い識別番号(正確には0と1の並び:ビット列)を与えて数字の列として文字列を表現するようになった。この数字と文字の対応関係を定めた規約が文字コードである。
最も普及しているASCII文字コードは英数字や制御文字、記号などを収録した7ビット(7桁のビット列、十進数では0~127)のコード体系であり、例えばアルファベットの大文字の「A」は65番(ビット列で1000001)、小文字の「z」は122番(同1111010)などと定められている。あるデータ列がASCII文字列であることが分かっていれば、番号との対応関係を元に文字の並びを知ることができる。
文字集合と符号化方式
文字コードを定義するには、どの言語を対象にどの文字を収録するかを決めなければならず、まず収録する文字(の字形)を特定して列挙した文字集合(文字セット)を定める。その際、番号などは与えずにただ収録する文字群を定義したものをレパートリ、各文字に一意の番号を与えたものを符号化文字集合(CCS:Coded Character Set)という。
欧米圏の8ビット文字コード規格のように、符号化文字集合をそのまま文字コードとして利用することも多いが、漢字圏など収録文字数の多い言語では各文字に割り当てられた符号をどのようなビット列で表現するかについて、いくつかの異なる方式を定めている場合があり、これを文字符号化方式(CES:Character Encoding Scheme/文字エンコーディング)という。
例えば、代表的な日本語の符号化文字集合の一つであるJIS X 0208規格に定められた符号をそのまま文字コードとしたものを区点コードというが、この文字集合を対象とする符号化方式としてJISコードやShift JISコード、日本語EUC(EUC-JP)などが定められており、同じ文字でも符号化方式によってそれぞれ異なったビット列で表現される。世界中の文字を収録したUnicodeでも、同じ文字集合に対してUTF-8、UTF-16、UTF-32など複数の異なる符号化方式が定義されている。
JISコード 【ISO-2022-JP】
国際的な文字コード規格の一つであるISO/IEC 2022の枠組みに沿って定義された日本語の文字コードの一つ。文字コードを7ビット単位で符号化する方式を定めている。
文字コード規格で各文字に付けられた番号を一定の規則で符号化する方式を定めたもので、「エスケープシーケンス」(escape sequence)という特殊な制御文字を挿入することにより複数の文字集合(いわゆる半角文字と全角文字など)の切り替えを行う。同じコードでも直前のエスケープシーケンス次第で別の文字を指し示すことがあるため、文字列は先頭から順に読み込まなければならないという制約がある。
ASCII文字コードで定義された制御文字やラテン文字(いわゆる半角英数字・記号)に加え、JIS X 0208で定義された日本語文字(ひらがな、カタカナ、漢字)やギリシャ文字、キリル文字、全角記号などを記述できる。いわゆる半角カタカナは含まれていない。
最初の仕様は1993年にRFC 1468として標準化され、1997年にはJIS X 0208の改訂版に収録され国内の公的な標準規格となった。その後、JIS X 0212で定義された文字を扱えるようにしたISO-2022-JP-1(RFC 2237)などいくつかのバリエーションが策定された。
Unicodeの普及以前に、Shift JISコード、日本語EUCコード(EUC-JP)と並んで古くからよく用いられてきた有力な日本語文字コードの一つである。特に、1990年代後半のインターネットの一般への普及の初期に、8ビット単位の文字コードが欧米で開発された電子メールソフトウェアなどと相性が悪かった(7ビットコードしか想定していないものが多かった)ことなどから、電子メールで日本語を扱う際の事実上の標準として広まった。
Shift JIS 【シフトJIS】
コンピュータで日本語を含む文字データを扱うために用いられる文字コード標準の一つ。Windowsなどが標準の日本語文字コードとして採用したことから広く普及した。
コンピュータで文字データを扱うには、文字や記号の一つ一つに対応する番号(符号)を与え、文字の列を番号の列に変換する必要がある。文字と番号の対応関係を定めた仕様を「符号化文字集合」、番号を具体的なビット列として表す変換ルールを「文字エンコーディング」という。
Shift JISは「JIS X 0201」や「JIS X 0208」などの標準規格で定められた符号化文字集合を対象とする文字エンコーディング仕様の一つで、JIS X 0201の半角英数字や制御文字、半角カタカナを1バイトで、JIS X 0208の全角文字を2バイトで表すことができる。
主な特徴
JIS漢字コードを対象としたエンコーディング方式には、いわゆる「JISコード」の通称で知られる「ISO-2022-JP」や、UNIX系OS向けに策定された「EUC-JP」(日本語EUC)もある。これらが連続したコード領域で文字を表すのに対し、Shift JISでは文字集合をいくつかに分割し、それぞれ異なる離れた領域へ移動(shift)させている。
これは、2バイト表現の1バイト目(先頭バイト)の値として、既存のいわゆる半角文字のコード領域、すなわち、ASCIIコード由来の英数字・記号文字・制御文字やJIS X 0201で追加された記号・半角カナ文字などの使用している値が出現するのを避けるためである。
ISO-2022-JPなどは1バイト目に8ビット文字コードと共通する値を使用しているため、どの文字コードの文字であるかをシステムに知らせるためにコード切り替えの印(エスケープシーケンス)をその都度挿入しなければならない。
一方、Shift JISは1バイト目に8ビット文字と重ならないようコードを配置しているため、1バイト目を読み込んだ時点ですぐにShift JISの文字であると判定でき、ASCII文字と漢字などが混在する文字列でもエスケープシーケンスを付加しなくてよいという利点がある。
ただし、2バイト目にASCII領域のコードが現れることは避けられないため、文字列データ中の任意の位置のバイトが半角文字なのかShift JIS文字の2バイト目なのかを他の手掛かりを用いずに知ることはできない。
また、2バイト目に16進数「5C」(92番、欧米ではバックスラッシュ、日本では円記号)が現れる文字があり、バックスラッシュや円記号にエスケープ文字などの特別な意味を与えているシステム(特に、日本語コードを考慮しない欧米製のソフトウェアなど)でうまく動作しないことがある。
歴史
Shift JISは1982年に日米のコンピュータ業界数社が共同で考案したとされ、米マイクロソフト(Microsoft)社が自社のパソコン向けオペレーティングシステム(OS)製品の「MS-DOS」や「Windows」に「CP932」(コードページ932)あるいは「MS漢字コード」として実装したことで広く普及した。
メーカー独自仕様だったことから長らく公的な規格とはなっていなかったが、1997年の「JIS X 0208」改訂版の附属書として仕様が掲載された。その後、2000年の「JIS X 0213」で「Shift_JISX0213」の名称で記載され、2004年のJIS X 0213改訂版では「Shift_JIS-2004」に改名されている。正式には「Shift_JIS」と間にアンダーバーを挟んで表記する。
Unicode 【ISO/IEC 10646】 ⭐
文字コードの国際的な標準規格の一つで、世界中の様々な言語の文字を収録して通し番号を割り当て、同じコード体系のもとで使用できるようにしたもの。
コンピュータで文字データを扱うには、文字や記号の一つ一つに対応する番号(符号)を与え、文字の列を番号の列に変換する必要がある。文字と番号の対応関係を定めたルールを「文字コード」(character code)と呼び、従来は国や言語圏ごとに自分たちの使う文字のコード体系を定めて使用していた。
Unicodeは世界中の様々な言語の文字を集め、すべての文字や記号に重複しないようそれぞれ固有の番号を与えた文字コード規格である。世界の主な言語のほとんどの文字を収録しており、通貨記号や約物など文字と共に使われる記号や絵文字なども登録されている。
米大手IT企業を中心とする業界団体「Unicodeコンソーシアム」(Unicode Consortium)が仕様を策定・改訂しており、ほぼ同じものがISO(国際標準化機構)とIEC(国際電気標準会議)の合同委員会によって「ISO/IEC 10646」として国際標準となっている。ISO/IEC側ではUnicodeに相当する文字集合の名称を「UCS」(Universal Coded Character Set)としている。
コードポイント
Unicodeでは、登録された文字のそれぞれについて「コードポイント」(code point:符号点、符号位置と訳される)と呼ばれる一意の通し番号を与えている。例えば、日本語のカタカナの「ア」には12450番が割り当てられており、説明文などでは16進数を用いて「U+30A2」のように表記する。
世界中のあらゆる言語の文字を収録するという目的のため、コードポイントは最長で21ビットの値(上限は1114111番、U+10FFFF)まで用意されている。初期の規格で世界の既存の文字コードに規定された文字の多くが収録されたが、独自の文字コードを持たなかった言語や、絵文字、古代文字、新設された通貨記号などを中心に、現在も毎年のように新しい文字が追加されている。
現在はコードポイント空間全体の約12%にあたる約15万文字が割り当て済みで、規格上は文字を規定しない「私用面」(企業などが独自に使用してよい)が約13万文字(約12%)分予約済みである。残りの約75%が未割り当てとなっている。
基本多言語面と追加多言語面
コードポイントの範囲のうち、16ビット(2バイト)の値で表現できる U+0000 から U+FFFF は「基本多言語面」(BMP:Basic Multilingual Plane)と呼ばれる。ラテンアルファベットやキリル文字、ギリシャ文字、ひらがな・カタカナ、ハングル、基本的な漢字など、主要な言語の文字のほとんどをカバーしている。
当初の規格はBMPのみの予定だったが、追加収録を希望する文字のすべてを登録しきれないことが明らかになり、後から U+10000~U+10FFFF の拡張領域が追加された。このうち、U+10000~U+1FFFF の範囲を「追加多言語面」(SMP:Supplementary Multilingual Plane/補助多言語面)と呼び、古代文字や絵文字などが収録されている。
日本語文字の扱い
日本語の文字は原則として日本語文字コードのJIS規格から収録されている。当初は「JIS X 0201」(いわゆる半角文字)、「JIS X 0208」(JIS基本漢字)、「JIS X 0212」(JIS補助漢字)に定められた文字を収録したが、後に「JIS X 0213」(JIS2000/JIS2004)のすべての漢字が収録された。
なお、JIS X 0213の一部の漢字についてはBMPには収まりきらず、東アジア各国・地域の追加漢字を収録する U+20000~U+2FFFF の領域(SIP:Supplementary Ideographic Plane/追加漢字面)に収録されている。
これら元になった規格の通り、半角カナも全角とは別に「HALFWIDTH KATAKANA LETTER A」(半角カタカナのア)等の名称で、全角英数字も「FULLWIDTH LATIN CAPITAL LETTER A」(全角ラテンアルファベット大文字A)等の名称でそれぞれ収録されている。
UTF (Unicode Transformation Format/UCS Transformation Format)
様々な事情から、文字をデータとして実際に記録・伝送する際には、文字集合で定められたコードポイントをそのままビット列で表すのではなく、一定の手順で特定の形式に変換する。この変換手順を「符号化方式」(文字エンコーディング)という。
Unicodeにも標準の符号化方式がいくつか定められており、用途や処理の都合に応じて使い分ける。全体を総称して「UTF」と呼び、Unicodeでは “Unicode Transformation Format” の略、ISO/IEC 10646では “UCS Transformation Format” の略とされる。
UTFには「UTF-8」「UTF-16」「UTF-32」の3種類があり(UTF-7もあるがIETF独自拡張)、同じUnicode文字列でも符号化が違えばまったく異なるバイト列として表現される。文字データの保存・交換用として最も一般的に使われるのはUTF-8で、単にUnicodeといえばUTF-8でエンコードされたデータを意味することが多い。
UnicodeとISO/IEC 10646
ISO(国際標準化機構)とIEC(国際電気標準会議)の合同委員会(JTC 1)は、1980年代後半に国際的な文字コード標準の策定を目指し、仕様の検討を始めた。当初の構想は4バイトのコードを用いて既存の各国の文字コードをほとんどそのまま収録・統合するというものだった。
1991年に民間の企業連合であるUnicodeコンソーシアムが設立され、Unicode規格が発表されると、公的な標準と業界標準の分裂を避けるためISO/IECとの間で一本化の調整が行われることになった。議論の末、Unicodeの仕様をほぼそのままISO/IEC標準として採用することになった。
同年に発行されたUnicode 1.0規格をほぼそのまま取り込む形で1993年にISO/IEC 10646-1規格の初版が標準化され、以降はUnicode側と仕様を擦り合わせながら改訂されていった。両者は用語法など細かな点に違いがあるものの、収録文字など仕様の実質は同一となっている。
人工知能 【AI】 ⭐⭐⭐
人間にしかできなかったような高度に知的な作業や判断をコンピュータを中心とする人工的なシステムにより行えるようにしたもの。
人類は未だに人間の脳の振る舞いや知能の仕組みを完全には解明していないため、AIにも明快な定義は与えられていない。また、情報技術の進歩に伴って時代によってAIとされるシステムの具体的な内容は大きく変化してきている。
特に、前の時代にAIの一分野として研究・開発が進められていたものが、技術が成熟し実用化や普及が進むとAIとは呼ばれなくなり、より高度で研究途上のものが新たにAIとして注目される傾向がある。この現象は「AI効果」と呼ばれ、例として文字認識技術(OCR)や検索エンジン、かな漢字変換システム、ロボット掃除機などが挙げられる。
2000年代後半以降にAIとされるものは、大量のデータから規則性やルールなどを学習し、与えられた課題に対して推論や回答、情報の合成などを行う機械学習(ML:Machine Learning)を基礎とするものが主流となっている。
特に、人間の神経回路を模したニューラルネットワーク(NN:Neural Network)で深い階層のモデルを構築し、精度の高い推論を行うディープラーニング(深層学習)研究に大きな進展があり、これに基づく研究や開発が盛んになっている。
応用分野として、チェスや将棋、将棋など知的なゲームで対局するシステム、画像や映像に映る物体や人物を識別する画像認識システム(コンピュータビジョン)、人間の発話を聞き取って内容を理解する音声認識システム、言葉を組み立てて声として発する音声合成システム、ロボットや自動車など機械の高度で自律的な制御システム(自動運転など)、自動要約や質問応答システム、高度で自然な機械翻訳といった様々な自然言語処理などがよく知られる。
自然言語処理 【NLP】 ⭐
人間が普段使っている日本語や英語といった自然言語を対象として、コンピュータによる自動処理により解析や生成、変換などを行う技術の総称。自然文検索、自動要約、自動翻訳などに応用されている。
日本語の書き言葉を対象とした自然言語処理では、文を単語などの最小単位(形態素)に分解する「形態素解析」、文の構造を調べる「構文解析」、単語の意味や語間の修飾関係を調べる「意味解析」、前後の文で得られる知識も用いて文意を確定する「文脈解析」などの段階で進めていく。
言語や表現形態によって必要な処理の内容が異なる場合がある。例えば、英語など単語間に空白を開けて文を記述する「分かち書き」を行う言語では形態素解析は不要となるが、話し言葉を対象に音声認識を行う場合は形態素解析が必要となる。
自然言語処理では処理手順を定めたアルゴリズムだけでなく、その言語の語彙や文法、連語、慣用句などを知るための大量のデータが必要となる。単語の意味や読み、品詞、活用形などを機械可読な形式に整理した「辞書」データや、構文解析済みの大量の文例を集めた「コーパス」などのデータ集合が利用される。近年では機械学習システムで自然言語処理を行うための学習済みデータモデル(言語モデル)の開発も盛んに行われている。
自然言語処理の応用としては、Web検索エンジンや音声アシスタント、かな漢字変換システム、光学文字認識(OCR)、文書編集ソフトのスペルチェッカーや校正ツール、音声認識(音声入力)や音声合成、機械翻訳、自動要約、テキストマイニングなどが挙げられる。
機械学習 【マシンラーニング】 ⭐⭐
コンピュータプログラムにある分野のデータを繰り返し与えることで内在する規則性などを学習させ、未知のデータが与えられた際に学習結果に当てはめて予測や判断、分類などを行えるようにする仕組み。現代の人工知能(AI)研究における最も有力な手法の一つ。
例えば、数字を手書きした画像と、そこに写っている数字をペアにした学習データをたくさん用意し、一定のアルゴリズム(計算手順)に従って次々にこれを処理していくと、画像のパターンから写っている数字を予測する学習モデルを作ることができる。学習済みのシステムに未知の手書き数字の画像を与えると、そこに写っている数字を推論して回答できるようになる。
従来このような仕組みを作ろうとすると、各数字の画像に現れる特徴的なパターンを人間が整理して、判断基準としてプログラムに組み込む必要があるが、機械学習ではデータから特徴を抽出して特定の結果(答え)に紐付ける操作をコンピュータが自動的に行うため、人間は学習させたい内容を表すデータを与えるだけでよい。
教師あり学習 (supervised learning)
機械学習の手法のうち、「例題と答え」という形式に整理された「教師データ」に適合するようにモデルを構築していく方式を「教師あり学習」という。例題を入力すると対応する答えを出力するようにモデルを調整していく。
人間が既に答えを知っているような判断や作業を自動化したい場合に有効な手法で応用範囲も広いが、生のデータを「例題と答えのペア」という形式に(人手によって)整理しなければならない。学習データの質や潜在的な問題点がそのまま精度や結果に反映されてしまう難点もある。
教師なし学習 (unsupervised learning)
人間が基準や正解を与えずに学習データを分析させ、システムが自律的に何らかの規則性や傾向を見出す方式を「教師なし学習」という。与えられたデータ群を何らかの目的をもって解析し、特徴の似たデータのグループ分けなどを行えるようにする。
人間にも正解が分からない課題についての知見を得たい場合や、大量のデータから規則性を探索したい場合などに有効な手法で、データの前処理が少なく現実世界にある多様な大量のデータを素材にできる。ただし、結果が何を意味するかは人間による解釈が必要で、人間にとって有用な結果が得られるよう制御するのが難しく精度も安定させにくいなどの課題がある。
強化学習 (reinforcement learning)
システムの行動に対して評価(報酬)が与えられ、行動の試行錯誤を繰り返して評価を最大化するような行動パターンを学習させる方式を「強化学習」という。機械の制御や競技、ゲームなどを行うAIの訓練に適している。
他の学習手法と異なり、人間がまとまった形で学習データを与えることはせず、システムは現在の状況を入力として行動を選択する。行動の結果は評価(値)としてシステムに伝達され、どのような行動が好ましい結果に繋がるかを繰り返し試行錯誤しながら学習していく。
人工知能・深層学習との関係
「人工知能」(AI:Artificial Intelligence)とは人間の知的な営みの一部を何らかの形で模倣するITシステム全般を指す総称であり、初期のAI研究では対象についての知識やルール、判断基準などを人間がプログラムの一部として直に記述する手法が一般的だった。
しかし、このような手法では知識の記述に手間がかかり、特定の狭い分野であっても人間のような判断を下せるシステムを実現するには途方も無い時間とコストが必要になってしまう。この限界を打ち破るため、人間は学習の仕方だけをプログラムとして実装し、実際の知識の獲得はデータを大量に与えて自動処理するという機械学習の手法が考案された。
機械学習の具体的な方式にはSVM(サポートベクターマシン)やベイジアンネットワーク、決定木(デシジョンツリー)学習、データクラスタリングなど様々な手法があるが、人間の脳の神経回路の網状の繋がりに着想を得た「ニューラルネットワーク」(NN:Neural Network)が有力な方式として台頭した。
2010年代になると、ネットワークの階層を従来より深く設定(4層以上)した「ディープニューラルネットワーク」(DNN:Deep Nueral Network)が目覚ましい発展を遂げ、機械学習研究・開発の中核として注目されるようになった。このDNNに基づく機械学習のことを「深層学習」あるいは「ディープラーニング」(deep learning)という。
教師あり学習 ⭐⭐
機械学習の手法の一つで、あらかじめ「正解」が明示されている学習データに適合するようにモデルを構築していく方式。学習のためには問題と正解の形に整理された大量のデータが必要となる。
学習データが「例題と答え」という形式に整理されており、例題を入力すると対応する答えを出力するようにモデルを訓練していく。答え(出力)がラベルや離散値であるようなデータを用いれば分類問題に、実数などの連続値を取るようなデータを用いれば予測や推論を行うための回帰問題に適用できる。
例えば、数字を手書きした画像(例題)と、写っている数字(答え)をペアにした教師データをたくさん用意し、画像を入力すると数字を答えるモデルを作成すると、手書きの数字を認識するシステムを作ることができる。
人間が既に答えを知っているような判断や作業を自動化したい場合に有効な手法で、様々な分野で応用が広がっている。学習効率も高く精度も向上させやすいが、生のデータを「例題と答えのペア」という形式に整理しなければならず、学習データの質や潜在的な問題点がそのまま精度や結果に反映されてしまう難点もある。
一方、人間があらかじめ正解を示さずにデータを与え、似た特徴のデータに分類する(クラスタリング)といった処理を行えるようにする手法を「教師なし学習」(unsupervised learning)、決まった正解は存在しないが出力結果に対する評価は存在し、好ましい評価を得るために出力を調整していく手法を「強化学習」(reinforcement learning)という。
教師なし学習 ⭐
機械学習の手法の一つで、人間が基準や正解を与えずに学習データを分析させ、システムが自律的に何らかの規則性や傾向を見出す手法。
与えられたデータ群を何らかの目的をもって解析し、特徴の似たデータのグループ分けなどを行えるようにする。人間が示した基準に従っているわけではないため、得られた結果が何を意味するかは人間の解釈を必要とする。
具体的な手法としては、データ群を似た特徴の集団に分類する「クラスター分析」(データクラスタリング)、多数の説明変数を要約して少ない変数で同じ傾向を説明できるようにする「主成分分析」、複数の項目間に潜在する関連性を見つけ出す「アソシエーション分析」などがある。
人間にも正解が分からない課題についての知見を得たい場合や、大量のデータから規則性を探索したい場合などに有効な手法で、データの前処理が少なく現実世界にある多様な大量のデータを素材にできる反面、人間にとって有用な結果が得られるよう制御するのが難しく精度も安定させにくいなどの課題がある。
一方、人間があらかじめ「例題と正解のペア」という形式に整理した学習データ(教師データ)を利用してモデルを訓練する手法を「教師あり学習」(supervised learning)、決まった正解は存在しないが出力結果に対する評価は存在し、好ましい評価を得るために出力を調整していく手法を「強化学習」(reinforcement learning)という。
強化学習 【RL】
機械学習の手法の一つで、システムの行動に対して評価(報酬)が与えられ、行動の試行錯誤を繰り返して評価を最大化するような行動パターンを学習させるもの。機械の制御や競技、ゲームなどを行うAIの訓練に適している。
他の学習手法と異なり、人間がまとまった形で学習データを与えることはせず、システムには自身が現在置かれている環境や状態および可能な行動の選択肢と、行動(出力)に対する評価が与えられる。システムは現在の状況を入力として行動を選択し、得られた評価を元に好ましい行動を学んでいく。
実際には、行動一回ごとにその良し悪しを評価する仕組みを用意するのは非現実的なことが多いため、連続して行動を起こした結果何らかの目標を達成(対戦に勝利する等)した場合に、遡って一連の行動に良い評価を与えるという設計にすることが多い。
近年ではニューラルネットワークの階層を深くしたディープラーニングに強化学習を組み合わせることで非常に複雑なタスクの自動化が可能なことが示され、注目が集まっている。システムが環境に働きかけて試行錯誤を行える状況に適しており、囲碁や将棋、ビデオゲームなどのプレイ、自動運転、ロボット制御などへの適用事例がよく知られる。
ニューラルネットワーク 【NN】 ⭐⭐⭐
動物の脳の内部で情報の処理や記憶を行っている、大量の微小な神経細胞(ニューロン)が相互に網状に繋がった構造のこと。また、これを模式化した数学的なモデルをコンピュータ上で再現し、機械学習などの知的な操作に応用したもの。IT分野では専ら後者を指す。
脳の内部にはニューロンが複雑に絡み合ったネットワークが存在し、神経系を通じて体内の器官から刺激を受け取ると、細胞間で互いに電気信号を交換し合い、記憶が形成されたり発話や運動など各器官への指示が出力されたりする。
この仕組みを抽象化して数理モデルとして定式化したものや、さらにコンピュータ上のソフトウェアなどに実装して情報処理に応用したものを「人工ニューラルネットワーク」(ANN:Artificial Neural Network)という。IT分野において、文脈上、本物の神経回路網と混同する恐れが無い場合は、このANNを指して単にニューラルネットワークと呼ぶ。
ニューラルネットワークの構造
模式化されたニューラルネットワークは、神経細胞を模したノードを層状に配置した構造を持つ。各ノードは固有のパラメータに基いて比較的単純な計算を行う能力を持ち、上位層の各ノードの計算結果を入力として所定の計算を行う。計算結果は下位層の各ノードへそれぞれ固有の重み付けを行った上で出力される。
最もよく知られる順伝播型の3層ニューラルネットワークの場合、ノードは「入力層」「中間層」(「隠れ層」とも呼ばれる)「出力層」の3層に分かれて配置される。最上位のノード群は処理対象のデータの入力を受け付ける「入力層」で、対象を表すデータモデルの構造に従って数や役割が設定される。
入力層のノードはそれぞれの入力値に基いて計算を行い、結果を「中間層」の各ノードへ伝達する。中間層のノードは入力層から受け取った値を合計し、やはり同じように計算を行って結果を「出力層」の各ノードへ伝達する。出力層の計算結果がネットワーク全体の出力(回答)となる。
機械学習への応用
各ノードが行う計算式の係数や、ノード間で値を伝達する際の重み付け(ノードxからノードyへの重みがwのとき、xの出力のw倍をyの入力とする)などのパラメータ群を対象や目的に合わせて調整すると、入力データから何らかの推論や予測、分類などを得るシステムを作ることができる。
例えば、手書きの数字が書かれた画像データを入力すると、『「1」の確率が90%、「7」の確率が10%』といったように何の数字が書かれているか推論(分類)するシステムや、賃貸物件の最寄り駅と駅からの距離、広さを入力すると家賃を予測(回帰)するシステムなどを構成することができる。
パラメータを開発者が一つ一つ決定していくことも理屈の上では不可能ではないが、実用的なシステムではパラメータの数も組み合わせも膨大な数にのぼるため手動で調整するのは現実的ではなく、実際のデータを「お手本」としてパラメータ調整を自動で行う「機械学習」(ML:Machine Learning)の手法が用いられる。
ニューラルネットワークの学習手法として最も一般的な「教師あり学習」では、入力データと出力すべき「正解」データをセットにした「教師データ」と呼ばれるデータの組を用意する。初期状態では各ノードのパラメータはランダムに決定しておき、教師データを入力すると当然ながらデタラメな出力を行う。
これを「正解」の出力データと比較すると、望ましい状態からのズレを定量的に評価することができる。このズレを(少しだけ)打ち消すように、各ノードのパラメータを出力層から遡って順番に修正していく(誤差逆伝播法)。これを様々な教師データを用いて繰り返し行うことで、教師データ群の傾向を学習し、似た入力に対して似た出力を返せるようになる。
ニューラルネットワークの種類
ニューラルネットワークにはノード間の結合の仕方や学習の仕方などによって様々な種類がある。どのノードも下層のすべてのノードへ結合するものを「全結合型」、入力から出力へ一方向に信号が伝播するものを「順伝播型」(フィードフォワード型)という。最も初期に考案されたニューラルネットワークは全結合の順伝播型にあたる。
一方、順伝播型だが層間が全結合になっていないものを「畳み込みニューラルネットワーク」(CNN:Convolved Neural Network)、信号の伝播を双方向に行うものを「再帰型ニューラルネットワーク」(RNN:Recurrent Neural Network/回帰型ニューラルネットワーク、リカレントニューラルネットワーク、循環ニューラルネットワークとも)という。また、中間層が2層以上(全体が4層以上)の深い階層を構成したものは「深層ニューラルネットワーク」(DNN:Deep Neural Network/ディープニューラルネットワーク)と呼ばれる。
他にも、教師なし学習を行うための「オートエンコーダ」や「ボルツマンマシン」、DNNで強化学習を行うための「DQN」(Deep-Q-Network)、データの生成が可能な「敵対的生成ネットワーク」(GAN:Generative Adversarial Network)、複素数や複素演算を扱うよう拡張した「複素ニューラルネットワーク」など、様々な種類のニューラルネットワークが考案されている。
活性化関数 【伝達関数】 ⭐
ニューラルネットワークの各ニューロンで、入力値に対して適用される関数。非線形変換になるような関数が選ばれ、計算結果は下の階層のニューロンへ出力(伝達)される。
人間の脳の神経細胞の働きを模した機械学習モデルである人工ニューラルネットワーク(ANN:Artificial Neural Network)では、あるニューロンは上の階層の複数のニューロンから入力値を受け取る。入力値はニューロン間の繋がりの強さに応じて重み付けされて加算される。
加算された値に対して実数倍など単純な操作だけを行って次のニューロンに出力したのでは単なる線形変換の繰り返しとなってしまい、階層を深くする意味がないため、入力値の和に対して非線形な変換を行う必要がある。この変換を行うのが活性化関数である。
初期の研究では、脳のニューロンの発火(外部からの刺激によって電気信号を他のニューロンに発信する現象)を模して「ステップ関数」が用いられた。これはある閾値(しきい値、基準となる値)を超えれば「1」を、超えなければ「0」を出力する関数である。
バックプロパゲーションなどの手法を用いる場合は微分できる関数であることが望ましいため、基準値付近で急激に出力値が上昇する「シグモイド関数」あるいは「tanh関数」(hyperbolic tangent:双曲線正接関数)などが好まれる。近年では、基準値以下では0、基準値以上では線形に出力値が上昇する「ランプ関数」(ReLU:Rectified Linear Unit)や、これを曲線で近似した「ソフトプラス」がよく用いられる。
過学習 【過剰適合】
回帰分析や機械学習で、学習データに対してあまりに忠実に適合しすぎて本来データが示唆する傾向から大きく外れてしまう現象。
一般に、回帰問題で予測精度を高めるために媒介変数を増やすなどモデルの自由度を高めることが行われるが、学習データの規模に対して詳細すぎるモデルを用意すると、外れ値やノイズ、偏りまで忠実に再現してしまい、本来データが表しているはずの傾向から却って外れてしまう現象が起きる。
このような過学習を起こしたモデルの回帰曲線は学習データのほとんどの点を通る複雑に折れ曲がった形になり、学習データに対しては完全に適合するが、未知のデータに対しては的外れな結果を返し、実地では使い物にならない状態になってしまう。
過学習を緩和する手法は様々なものが提唱されており、可能な場合は学習データを増やしたり、自由度をあえて下げて単純なモデルを使用したりする。学習データを2つに分けて片方で学習、もう片方で精度の検証を行う「交差検証」、モデルが複雑化するとそれを打ち消すようにペナルティを与える「正則化」などの技法が用いられることもある。
ディープラーニング 【深層学習】 ⭐⭐⭐
ニューラルネットワーク(NN:Neural Network)を用いた機械学習システムのうち、中間層(隠れ層)が複数のシステムを利用するもの。広義にはこれをNN以外の手法に応用したもの(深層強化学習など)を含む。画像処理に強く精度が高いため近年急激に注目が高まっている。
ニューラルネットワークは動物の脳の仕組みを模した学習する機械の数学的なモデルで、データの入力、単純な計算、出力を連続して行うノードを脳神経(ニューロン)に見立て、これを大量に用意して網状に相互接続した構造となっている。
ノードは層状に配置され、外部から入力層のノード群がデータを受け取り、計算を行って結果を中間層に伝達し、中間層も同様に計算を行って出力層に伝達、出力層から結果が出力される。学習データを用いて計算や伝達に用いるパラメータを調整すると、推論や予測、分類などを行うシステムを構成することができる。
1950年代の研究初期に提唱されたニューラルネットワークはノード群を入力層・中間層・出力層の3層に配置した構造だったが、1990年代に複数の中間層を設けて全体を4層以上の深さにした「ディープニューラルネットワーク」(DNN:Deep Neural Network)が提唱された。これを用いて行う機械学習をディープラーニングという。
初期のDNNは性能がなかなか向上せずあまり注目されてこなかったが、2006年のジェフリー・ヒントン(Geoffrey E. Hinton)氏による「オートエンコーダ」の提案を突破口に劇的な飛躍を遂げた。2010年代以降は代表的な機械学習モデルとして活発に研究・開発が進み、有用なシステムの実用化や社会への実装も進展した。
ディープラーニングは画像認識(画像に何が写ってるのか検知する)において顕著な高性能を示したため画像処理分野での研究や応用が最初に注目され、画像認識や画像生成、文字認識、自動運転のためのセンサー技術などへの適用が進んだ。ディープラーニングを応用したコンピュータ囲碁やコンピュータ将棋のシステムがプロに勝利するなどのニュースを通じて一般への認知度も高まった。近年では機械翻訳や音声認識、音声合成、動画生成などへの応用も進んでいる。
ファインチューニング
ニューラルネットワークを応用した機械学習システムで、事前に学習したモデルに対して追加の学習データを与えて調整すること。汎用的なモデルを特定の専門に特化したモデルにすることができる。
機械学習システムに用いられる(人工)ニューラルネットワークは人間の脳の神経回路のネットワークを模したモデルで、神経細胞を模したノードを層状に配置した構造を持つ。これに大量の学習データを与え、その特徴をノード間の繋がり具合(重み)として表現する。
大規模なモデルを作成するには大量の学習データや計算資源が必要となるため、事業者などが大規模なデータセットを用いて事前学習したモデルを用意し、これを利用者が自らの問題解決のために使用することが多い。
大規模なモデルは様々な利用者や用途で使えるように汎用的なデータセットで学習させることが多いため、特定の分野や対象、あるいは特定の組織内の情報には精通しておらず、必ずしも有用な結果が得られないことがある。
そこで、既存モデルの出力側に層を追加し、既存モデルに含まれる層も含めて新しいデータセットで学習し直す手法をファインチューニングという。既存モデルの持つ基本的な知識や能力はそのままに、特定の専門や組織に特化した出力が得られるようになる。
なお、既存モデルの基本的な性質を残すため、入力側の層は変更できないよう固定し、最終的な結果に影響する出力側の何層かを微調整する。既存モデルを完全に固定して再学習せず、追加した層のパラメータのみ調整する手法もあり、(狭義の)「転移学習」(transfer learning)という。
畳み込みニューラルネットワーク 【CNN】
人工知能の実装の一つであるニューラルネットワークの種類の一つで、入力データから断片的な特徴を捉えるための「畳み込み層」を組み込んだもの。高精度な画像認識などが可能となる。
機械学習システムに用いられる(人工)ニューラルネットワークは人間の脳の神経回路のネットワークを模したモデルで、神経細胞を模したノードを層状に配置した構造を持つ。各ノードは上位層のノードから受け取った入力に単純な計算を行って下位層のノードへ伝達する。
畳み込みニューラルネットワークは入力層と出力層の間に中間層(隠れ層)が多数ある「ディープニューラルネットワーク」(DNN)の一種で、人間の視覚の働きを模した構造となっている。上位層側にノード間の結合が制約された多数の「畳み込み層」と「プーリング層」のセットが配置され、最下層の「全結合層」を通して最終的な出力が得られる。
各層の働き
畳み込み層は脳の視覚野にある「単純型細胞」の働きを模したもので、縦線、横線、曲線といった画像に含まれる断片的な小さな特徴を検知して下層のノードへ伝達する。特徴は「フィルタ」あるいは「カーネル」と呼ばれる小さな行列で表現され、画像のどの位置にどの特徴があるかを示す「特徴マップ」が下層へ送られる。
プーリング層は脳の視覚野にある「複雑型細胞」の働きを模したもので、畳み込み層から得た特徴マップに一定の演算を行ってサイズを縮小する。特徴の空間的な位置のズレを吸収し、同じ形状が画像中のどこにあっても同じように検知できるようにする(移動不変性)。
個々の畳み込み層やプーリング層は個別の特徴に反応するため、最後にすべてのノードが結合している全結合層へ様々な特徴の情報を流し込み、総合的な分類や予測などを行う。画像認識などの課題では物体の移動の影響を受けにくいため、それ以前のモデルよりも高い精度で物体の検知や分類を行うことができる。
LLM 【Large Language Model】
機械学習システムで大量の学習データを処理して構築した、自然言語を扱うことができるモデル。特定のタスクに特化したモデルではなく、様々な用途に汎用的に用いることができる。
日本語や英語などの自然言語で書かれた文章などで構成される大規模なデータセット(言語コーパス)で学習したニューラルネットワークの一種で、文章の理解や生成、要約、校正、対話、翻訳など様々なタスクをこなすことができる。
大規模言語モデルは、ある単語の並びの後に続く単語として、何を選べば最も「もっともらしい」かを確率として表現する。何らかの自然言語の入力を与えると、その内容に対する関連性、言語表現として自然さなどを勘案しながら新しい文章を出力することができる。利用者の指示に従って文字情報を生み出す生成AIとして利用されることが多い。
多くの機械学習システムでは、人間の手によって特定の課題のために調整された学習データを用いる「教師あり学習」を行うが、大規模言語モデルは文章の一部を隠して自分で「穴埋め問題」を作るなどの手法で与えられた文書データそのものを学習することができる(自己教師あり学習)。公開されている大量の文章などをそのまま学習に用いることができるため、大規模なモデルを効率的に構築することができる。
大規模言語モデルの具体的な設計(アーキテクチャ)にはいくつかの手法が提案されているが、現在主流となっているのは「Transformer」と呼ばれるモデルである。入力データ中の各要素に注目度合いに相当する重み付けを行う「アテンション」(attension)と呼ばれる機構を組み込んだモデルの一つで、並列処理しやすい構造であるため学習時間を短縮できる利点がある。
Transformerに基づいて構築された言語モデルとしては米グーグル(Google)社の「BERT」(Bidirectional Encoder Representations from Transformers)や米オープンAI(OpenAI)社の「GPT」(Generative Pre-trained Transformer)などがある。前者は同社のWeb検索サービスなどで、後者は対話的なAIチャットボット「ChatGPT」などで用いられている。
大規模言語モデルでは、学習が完了したニューラルネットワークが内部的にいくつの値(パラメータ)の組み合わせとして表現されるかを「パラメータ数」と呼び、言語モデルの規模を表している。パラメータが多いほど、豊富な語彙や知識を用いてより適格で自然な文章を生成できるとされる。現在実用化されているモデルは数億から数百億ものパラメータを持っており、十億を表す「B」(billionの頭文字)を用いて「7.5B」(75億パラメータ)のように表記する。