MATOBA Logo

AIをつくる側になるための考え方

AIをつくる側になるための考え方
猫の怒り表情

最近、AI、AIってうるさいのにゃ。AI搭載って文句になんのありがたみも感じなくなってきたこの頃にゃ。ライオンの上司の小言みたいなものにゃ。もう右から左に流すことを覚えたのにゃ。

マトバオーの通常表情
マトバオー

確かにね。AIって一言で言っても、それがどんな目的で作られたAIなのか、どんなふうに動くのかはバラバラだ。それに性能だってピンキリだし。だけど、どんなAIにも共通する考え方があるんだ。それを理解すると各製品が何のためにどんなAIを導入したのかがなんとなく分かるようになって、その製品の本当の価値を見抜くことができるようになるよ。

猫の悲しみ表情

長くなりそうかにゃ?アマズンで買ったAI搭載マッサージチェアでくつろいでるから、大事なとこだけ起こしてにゃ。

はじめに

AI(人工知能)とは、極めて多様な技術の総称ですが、その多くは共通の概念をもちます。それは、AIとは入力データ X を受け取り、出力データ Y を生成する一つの「関数 F」である、という考え方です。

Y=F(X)Y = F(X)

どんなに複雑なAIも、突き詰めればこのシンプルな形で表現できます。

  • 入力 (X)
  • 関数 (F)
  • 出力 (Y)

また、行列という考え方を用いることで、Fは複数の数値を同時に扱うことができるようになります。

例1: 複数の数値列を同時に2倍する関数

たとえば、数値列に対してすべての要素を2倍する関数 F を考えてみましょう。ちなみに、この数値列の事をベクトルといいます。

F([102134])=2[102134]=[204268]F\left( \begin{bmatrix} 1 & 0 & 2 & 1 & 3 & 4 \end{bmatrix} \right) = 2 \cdot \begin{bmatrix} 1 & 0 & 2 & 1 & 3 & 4 \end{bmatrix} = \begin{bmatrix} 2 & 0 & 4 & 2 & 6 & 8 \end{bmatrix}

例2: 縦に拡張して二次元にすることも可能

今度は、数値列を1行増やしてみましょう。このようになると、2次元の行列と呼ばれます。もちろん、全部一斉に2倍にする操作を行うことができます。ちなみに、奥行方向に行列を重ねたものをイメージできますか?これを3次元テンソルといいます。以降、4次元、5次元と際限なく重ねることができますが、日常で触れるのは多くても4次元程度です。

F([103412])=2[103412]=[206824]F\left( \begin{bmatrix} 1 & 0 & 3 \\ 4 & -1 & 2 \end{bmatrix} \right) = 2 \cdot \begin{bmatrix} 1 & 0 & 3 \\ 4 & -1 & 2 \end{bmatrix} = \begin{bmatrix} 2 & 0 & 6 \\ 8 & -2 & 4 \end{bmatrix}

例3: 形を変えることも可能

また、関数 F によって、行列の形(構造)そのものを変換することも可能です。このような操作を行列の内積といいます。詳細な計算手順は省略しますが、数学的にこのような計算を表現可能であり、かつ計算機がこれを計算できるという事実が大切です。

F([103412])=[12][103412]=[927]F\left( \begin{bmatrix} 1 & 0 & 3 \\ 4 & -1 & 2 \end{bmatrix} \right) = \begin{bmatrix} 1 & 2 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 3 \\ 4 & -1 & 2 \end{bmatrix} = \begin{bmatrix} 9 & -2 & 7 \end{bmatrix}

 

このように、あらゆる種類のデータについて、数字の集まりとして表現できれば、Fで操作可能。つまり、AIで操作できる、というのが現代のAIの基本的な捉え方です。

AIが画像・音声・言語・動きなど、さまざまなデータを処理できるのは、それらすべてが「数値の構造」として表現可能だからです。以降、具体的に見ていきましょう。

AIが扱えるデータの種類

画像データを数値で表す

私たちが普段見ているデジタル画像は、コンピュータにとっては単なる「ピクセル(画素)」と呼ばれる色の点の集合体に過ぎません。AIが画像を扱うには、このピクセルの集まりを数値の行列(マトリックス)として表現する必要があります。

モノクロ画像の場合:


最もシンプルなモノクロ画像は、2次元のグリッドです。各ピクセルは明るさの情報(輝度値)だけを持っており、一般的に「0(黒)~255(白)」の256段階の整数で表されます。

5×5、16×16、512×512のモノクロ画像比較図

5×5、16×16、512×512のモノクロ画像比較図

たとえば、図の左端、5×5の画像は以下のような数の集まり(行列)として表現できます。これを16×16(真ん中)、512×512(右)と大きくしていくほど、きれいに見えるようになっていきます。

[809190129111596694124968264496151504958815969939293108]\begin{bmatrix} 80 & 91 & 90 & 129 & 111 \\ 59 & 66 & 94 & 124 & 96 \\ 82 & 64 & 49 & 61 & 51 \\ 50 & 49 & 58 & 81 & 59 \\ 69 & 93 & 92 & 93 & 108 \\ \end{bmatrix}

カラー画像の場合:


カラー画像は、通常「光の三原色」であるR(赤)、G(緑)、B(青)の組み合わせで表現されます。各ピクセルが「Rの値」「Gの値」「Bの値」の3つの数値を持ち、それぞれが0~255の強度を表します。

5×5、16×16、512×512のカラー画像比較図

5×5、16×16、512×512のカラー画像比較図

カラー画像は3つの行列を重ねたテンソルで表現する必要があります。文字で書くと下のようになります。

Red Channel:[758791901057979919298851101701458889981461569387818610096]Green Channel:[75879190105798194949889726288929350754988874467998]Blue Channel:[758791901057981949398887675949192532165988873457998]\textbf{Red Channel}: \\ \begin{bmatrix} 75 & 87 & 91 & 90 & 105 \\ 79 & 79 & 91 & 92 & 98 \\ 85 & 110 & 170 & 145 & 88 \\ 89 & 98 & 146 & 156 & 93 \\ 87 & 81 & 86 & 100 & 96 \end{bmatrix} \\ \textbf{Green Channel}: \\ \begin{bmatrix} 75 & 87 & 91 & 90 & 105 \\ 79 & 81 & 94 & 94 & 98 \\ 89 & 72 & 62 & 88 & 92 \\ 93 & 50 & 7 & 54 & 98 \\ 88 & 74 & 46 & 79 & 98 \end{bmatrix} \\ \textbf{Blue Channel}: \\ \begin{bmatrix} 75 & 87 & 91 & 90 & 105 \\ 79 & 81 & 94 & 93 & 98 \\ 88 & 76 & 75 & 94 & 91 \\ 92 & 53 & 21 & 65 & 98 \\ 88 & 73 & 45 & 79 & 98 \end{bmatrix}

このようにして、画像はその種類に関わらず、巨大な数の塊に変換できます。

言語データを数値で表す

言語データをAIが扱える数値に変換するには、分析の目的に応じて様々な手法が用いられます。単純なものから、単語の「意味」までを捉えようとする高度なものまで存在します。

項目①文字コード②トークナイズ③単語ベクトル
目的コンピュータが文字を識別・保存・表示するための基本的な表現。文章をAIが処理できる最小単位(トークン)に分割し、カテゴリ変数として扱う。単語の「意味」や単語間の「関係性」(類似度など)を数値的に捉え、AIが文脈を理解できるようにする。
方法各文字に一意の番号(コードポイント)を割り当てる。 例: 'A'→65, 'あ'→12354文章を単語などの単位に分割して、各単語にIDを振り、文章をIDの数値列としてとらえます。各単語を、意味的な特徴を捉えた高次元のベクトル(数値の配列)で表現します。
難易度
補足OSやプログラミング言語が内部で処理するため、普段AI開発者が直接意識することは少ない、最も基礎的な段階です。どの単位で分割するか(単語/形態素など)の設計が必要です。特に日本語では形態素解析ライブラリ(MeCabなど)の知識が求められます。多くのNLP(自然言語処理)タスクの基本的な前処理です。モデルの構築には、大量のテキストデータと専門知識、高い計算リソースが必要です。ただし、学習済みのモデルを利用することで、利用のハードルは大きく下がります。
言語数値化手法比較

言語数値化手法比較

猫の通常表情

せっかく数字1つで表現できていた単語を、たくさんの数字で表現する意味が分からないのにゃ。無駄にゃ。

マトバオーの通常表情
マトバオー

いいところに気づいたね。1文字をたくさんの数字で表すことによるメリットは、そのたくさんの数字のパターンによって、似た意味の単語なのかそうでないかを判断できることにある。たとえば「東京」と「ワシントン」はどちらも首都だから似ている、とかね。
他にも、適切に学習された単語ベクトルは、「東京」ー「日本」+「アメリカ」=「ワシントン」のように、意味の計算を行えることも分かっているんだ。

音声データを数値で表す

音声は、空気の振動が作る連続的なアナログ波形です。これをAIで扱うには、デジタルな数値データ、行列(マトリックス)の形に変換する必要があります。その変換プロセスは以下のようになります。

  1. 音の正体は「波」
    音は、空気の振動、つまり「波」として私たちの耳に届きます。ピアノの音、人の声、車の音など、聞こえ方が違うのは、この波の形がそれぞれ異なるためです。
  2. 波をそのまま数値にする「サンプリング」
    この波をデータ化する最も直接的な方法は、時間ごとに波の揺れの大きさ(振幅)を数値として記録していくことです。これをサンプリングと呼びます。例えば音楽CDでは、1秒間の音を44,100個の非常に細かい数値の列として表現することで、元の音を忠実に記録しています。
  3. 波を「音の高さ」に分解して画像にする「スペクトログラム」
    しかし、②の波形データをグラフにしても、それが具体的に「どんな音」として聞こえるのかを直感的に理解するのは困難です。
    そこで、音を「ドレミ」のような様々な高さの成分に分解し、「どの高さの音が、どのくらいの強さで鳴っているか」を調べる方法があります。この複雑な波を単純な高さの音の集まりに分解する計算手法がフーリエ変換です。
    音声は時間と共に変化していくため、まず元の波形データをごく短い時間(例えば0.02秒など)で区切ります。そして、その区切った一つひとつに対してフーリエ変換を繰り返し適用していきます。
    こうして得られた「各瞬間の、音の高さごとの強さ」のデータを時間順に並べ、強さを色の濃淡で表現して画像にしたものが、スペクトログラムです。スペクトログラムは横軸が「時間」、縦軸が「周波数(音の高さ)」、色が「強度」を表しており、音が時間と共にどう変化していくかを視覚的に捉えることができます。
スペクトログラムの画像表示

スペクトログラム

猫の通常表情

結局、画像になるのが良いってこと?フーリエ変換とかしなくても、別に聞ければいいと思うのにゃ。

マトバオーの通常表情
マトバオー

生の波形データは、単なる時間の経過に伴う空気の圧力変化の記録だから、ここから「音の高さ」や「音色」といった人間が知覚する特徴をAIが直接学ぶのは非常に困難なんだ。それに、スペクトログラムにすることで、音を画像として扱えるのも大きい。今まで画像で培ってきたノウハウを応用できるからね。

AIが扱えるデータの種類について

このように、画像、音声、言語といった一見すると全く異なる情報も、最終的には『行列』や『ベクトル』といった数値の規則的な集まりに変換されます。この共通の表現形式を持つことで初めて、AIは世界の様々な事象を統一的に学習し、認識することが可能になるのです。

AIをつかう・つくるうえで大切なのは入力(X)と出力(Y)

AIを活用する上で、最新のアルゴリズム(Fの形状)に注目しがちですが、それ以上に重要なのは「何をインプット(X)とし、何をアウトプット(Y)とするか」という問題設定そのものです。

  • X (入力): 目的を達成するために必要十分な情報を過不足なく含んでいる必要があります。無関係なデータはノイズとなり性能を低下させ、情報が不足していれば正しい判断は下せません。
  • Y (出力): 「何がしたいか」「何が知りたいか」というタスクの目的そのものです。目的を満たすアウトプットの形式を明確に定義することが、プロジェクトの出発点となります。

アルゴリズムの選定やチューニングも重要ですが、この入出力の定義、すなわち課題設定が不適切であれば、いかなる高度な技術を用いても価値のある結果は得られません。これはAI開発における「Garbage In, Garbage Out(ゴミを入れればゴミしか出てこない)」という原則として知られています。

猫の困惑表情

最新のすごいアルゴリズムを使えば、適当なデータを入れてもなんとかしてくれるのがAIのすごいところじゃないのかにゃ?

マトバオーのウインク表情
マトバオー

たしかに、最近のアルゴリズムは優秀になって、そもそも事前に学習されている状態で優秀だから下手なデータでもうまくいくことはある。でも、それは腐った食材で天才シェフが料理を作るようなもので、いつかはお腹を壊すよ。

おわりに

マトバオーの通常表情
マトバオー

ここまで読んでくれてありがとう!この記事では、AIは「関数F」であり、関数Fは画像、音声、言葉問わず様々なものを扱うことができるということを紹介したよ。今後は、生成AIや強化学習にも踏み込んで、それらが「関数F」という統一的な枠組みの中でどう工夫して動いているかなど紹介していくから、ぜひブックマークして、今後の記事の更新を楽しみにしていてね!

猫の通常表情

そうにゃ。僕はもっとすぐに仕事が便利になるものを知りたいのにゃ。

マトバオーの困惑表情
マトバオー

ごめんごめん、でも今回紹介したような話を理解できていると、既存のものを使うだけじゃなくて、新しく作るところまで一気に選択肢を広げることができるんだ。ぜひここを入り口として、自分だけのAIというものに思いをはせて欲しい。

もっと深く知りたい方へ

プログラミングのための線形代数
広告 - Amazonアソシエイトプログラミングのための線形代数
¥2,9702025/6/22時点)
4.097件のレビュー)

コンピュータサイエンスに携わる人のために書かれた線形代数の教科書 ベクトルや行列を扱う線形代数は、CGをはじめとする画像処理プログラミングだけでなく、構造化されたデータを扱うすべての処理の背景となる学問。しかし、抽象的で難解という側面もあり、独学で数学の教科書を紐解くのは困難である。本書は、プログラミングをする人たちに的を絞った構成で、線形代数とそのコンピュータサイエンスにおける応用をわかりやすく説明するものである。 【このような方におすすめ】 ・情報科の学生 ・職業プログラマ ・一般の線形代数を学ぶ学生

マトバオーの通常表情
マトバオー

僕が初めて、線形代数による演算と、実際の画像の変換がどう紐づくのかを理解できた本だね。線形代数を道具として使えるようになるためのチュートリアルとしてとてもいい本だと思う。

おすすめ記事

ニューラルネットワークを目で理解する

ニューラルネットワークを目で理解する

現代AIの核心「ニューラルネットワーク」を、目で見て理解する入門記事。なぜAIは賢く、時に間違うのか?プログラムで成功と失敗を体験しながら、その強力さと繊細さを学びます。AI開発に不可欠な思考の土台を築きましょう。

この記事をシェア