人工知能がさまざまな分野で応用され始めていて、今後は人間の仕事が徐々に機械に奪われていくという話も挙がっています。
そもそも人工知能って何だろうと思い、インターネットで調べてみましたが、うわべだけの記事ばかりで全く腹落ちしません。
これらの記事を書いている人間は、人工知能のことをまるっきり理解できてなくて、テレビや本の受け売りで好きなことを書いているだけだと感じました。
一方で、専門用語と理論式を多用して説明した記事もありましたが、難しすぎてちんぷんかんぷんでした。
・機械学習とディープラーニングの違いって何?
・「特徴量」「記述子」「説明変数」「目的変数」ってどういう意味?
まずは人工知能の意味とレベルについて説明し、最後に特徴量などのワードの説明をします。
なお、参考にしたのは東大・松尾豊氏の書籍『人工知能は人間を超えるか』です。
まずは定義から
知能とは何か?それは、ものごとを理解したり、判断する能力のことです。
では、人工知能(AI)とは何か?
それは、ものごとを理解したり、判断する能力を持つコンピュータのことです。
言い方を変えると、y=f(x)の関数fのことです。xを入れたらyを出してくれるものです。
ものごとを理解したり、判断するプロセスって一体どんなものなのでしょうか?
簡単に言うと、このような流れです。
情報の塊 → ①計算に使う情報を選ぶ → ②計算する → 欲しいアウトプット
y=f(x)でいうところの、①xを決める、②y=f(x)に入れる、③yを求める、ということです。
人の外観から、その人がどんな人かを判断する
例えば、私が街中で人を見かけたとします。
目の前にいる人の姿が”情報の塊”です。
この人はどんな人かを知りたい場合、「この人はこういう人です」というのが”欲しいアウトプット”になります。
その人間には無数の情報が詰まっている訳ですが、全ての情報を詰め込んじゃうと、計算量が膨大になり、計算する側にものすごい負荷がかかります。
したがって、無数にある情報から、この人は誰か?を判断するのに使えそうな情報を選別しピックアップします。
ここでは、ほうれい線の長さ、肌の凹凸度、髪の長さ、の3情報をピックアップしたとします。
次に、ピックアップした情報を計算機にインプットします。
y=f(x)の方程式があって、ピックアップした情報をxに代入してyを求めることが”計算する”ということです。
例えば、y=(92x2+34x+50)/45っていう方程式だったら、計算の手順はこのようになります。インプットした情報xを2乗する。これに92を掛ける。xに34を掛ける。これら2つを足す。これに50を足す。最後に45で割る。
このような方程式、言い換えると、計算する一連の手順のことをアルゴリズムと呼びます。そして、このアルゴリズムをコンピュータ語で表したものがプログラムです。
コンピュータ語でアルゴリズムを書くことをプログラミングと呼びます。
今回の例ですと、インプットする情報が3つあるので、アルゴリズムはy=f(x,x’,x”)の3変数の方程式になります。例えば、y=28x+5x’+56x”みたいな式になります。
そして、計算で求めたyの値から、yが○○~△△に入っているからこの人間は若い女性だと判断し、「この人間は、若い女性です」というアウトプットが出てくる。
これが「判断」という作業の一連の流れになります。
人間の脳は、この一連のプロセスを無意識にやっていると言えます。
人工知能のレベル1とレベル2:アルゴリズムは人が作る
さて、人工知能にはどのようなものがあるのか、レベルに応じてまとめてみます。
まずは、おおもとの情報(”情報の塊”)がとてもシンプルで、インプットする情報をピックアップする必要がないケースを考えます。または、人の手によって、情報の塊から計算に使う情報をピックアップしておくケースを考えます。
つまり、①計算に使う情報を選ぶがなくて②計算するだけのケースです。
アルゴリズムが割とシンプルなものをレベル1と呼びます。
センサーで人を察知したらドアを開ける自動ドアや、センサーで人がいる位置を読み取って、そこに集中的に冷風を当てるエアコンなんかがそうです。AIのイメージからするとほど遠いものです。
アルゴリズムが複雑なものをレベル2と呼びます。
将棋や囲碁がこれに当てはまります。将棋ですと、1四の位置に金がいて、3六の位置に飛車がいて・・・とインプット情報が多くなります。どの駒をどこに動かすかというアウトプットも複数あり、それを決めるためにはその先にある相手の手も考慮に入れる必要があります。
パターンが多すぎて、アルゴリズムを書くのが大変です。
人工知能のレベル3:機械学習 ~アルゴリズムはコンピュータが勝手に作る~
アルゴリズムをコンピュータ自身に作らせるものをレベル3と呼びます。いわゆる機械学習のことです。
例えば、インプットとアウトプットが対になった情報をたくさん準備します。情報1(インプット、アウトプット)、情報2(インプット、アウトプット)、・・・みたいなやつです。
具体的には、
・Aさん:インプット(ほうれい線の長さ=1.1cm、肌の凹凸度=0.1、髪の長さ=50cm)、アウトプット(若い女性)
・Bさん:インプット(ほうれい線の長さ=5.0cm、肌の凹凸度=0.4、髪の長さ=35cm)、アウトプット(中年女性)
・Cさん:インプット(ほうれい線の長さ=5.5cm、肌の凹凸度=0.8、髪の長さ= 5cm)、アウトプット(中年男性)
・Dさん:・・・
というものです。
これらのインプット情報をもとに、コンピュータがアルゴリズムを書きます。
コンピュータはどうやってアルゴリズムを書くんでしょうか?
Aさん、Bさん、Cさん、・・・、のデータを、ほうれい線の長さ、肌の凹凸度、髪の長さの3軸でプロットします。
そして、若い女性、中年女性、若い男性、中年男性の境界線を引かせて、その境界線よりこっちだったら若い女性と判断しましょう、っていう方程式を作らせるのです。
インプットするデータ量が豊富なほど、よりリアルに境界線を引けますので、誤判断が少なく高精度なアルゴリズムに仕上がります。
このように、インプットとアウトプットが対になった情報を読み込ませてコンピュータにアルゴリズムを作らせることを「教師あり学習」と言います。過去の事例から、今後起こることを予測する場合に使います。
「教師なし学習」というのもあります。「インプットとアウトプットが対になった情報」がない場合です。
とにかく、Pさん(ほうれい線の長さ=1.6cm、肌の凹凸度=0.2、髪の長さ=45cm)、Qさん(ほうれい線の長さ=5.8cm、肌の凹凸度=0.5、髪の長さ=10cm)、・・・・という風に、たくさんのインプット情報をコンピュータに読み込ませます。
そして、データを3軸プロットします。
そうすると、データの分布に濃淡が見えてきて、ここの濃いエリアは一つの括りとして捉えられるな、あっちの濃いエリアはまた別の括りとして捉えられるな、といった感じでカテゴリー分けできるようになります。これをクラスタリングと言います。
各クラスタ(括り)を識別できるような境界線を引かせて、その境界線よりこっちだったらクラスタAと判断せよ、というアルゴリズムを組ませます。そうすることで、例えばロボットが街中で人を見かけたときに、この人はどのクラスタかを判断できるようになります。
過去の事例や知見の蓄積がない場合に使う方法です。それはまさにインプットとアウトプットが対になった情報がない場合のことですからね。
人工知能のレベル4:深層学習(ディープラーニング) ~計算に使う情報のチョイスすらもコンピュータにやらせる~
最後に、レベル4です。
レベル1~3は、人間が「①計算に使う情報を選び」、コンピュータが「②計算する」というものでした。
レベル4は、「②計算する」だけじゃなくて「①計算に使う情報を選ぶ」もコンピュータにやらせるというものです。
情報の塊そのものをインプットするだけで、欲しいアウトプットが得られる方法です。いわゆるディープラーニングです。
具体例で説明します。
レベル3の機械学習では、目の前の人間という無数の情報の塊から、ほうれい線の長さ、肌の凹凸度、髪の長さだけをピックアップしてコンピュータにインプットしました。
一方、レベル4のディープラーニングは、目の前の人の姿をそのままコンピュータにインプットします。画像ファイルをそのままコンピュータに読み込ませるわけです。
こうなると、人がものごとを理解したり判断するというプロセスに全く介入しないことになりますので、完璧なAIとも言えます。
実は、判断や理解の成否は「①計算に使う情報を選ぶ」、つまりいかに筋のいい情報を選んでインプットするかに大きくかかっています。機械学習をさせるツールは揃っていても、「①計算に使う情報を選ぶ」に関する人間の目利きがないと、欲しいアウトプットが得られないということです。
ディープラーニングは、情報の塊からどういった情報を抜き出して計算すれば筋の良い計算ができるか、をも学習します。
「特徴量」「記述子」「説明変数」「目的変数」とは
この、計算に使用する情報のことを”特徴量”と言います。情報の塊からピックアップする情報のことです。
y=f(x,x’,x”)のx、x’、x”がまさに特徴量になります。
私は特徴量の定義がなかなか理解できなかったため、レベル3の機械学習とレベル4のディープラーニングの違いをうまく説明できなかったのですが、分かってしまえば簡単な話です。
特徴量のほかに、説明変数とか記述子と呼ぶこともあります。一方、yを目的変数と呼びます。
まとめ
人工知能の全体像をレビューしますと、まず、人工知能とはアルゴリズムが簡単なレベル1、それからアルゴリズムの複雑なレベル2の2つに分けられます。
レベル2の中には、コンピュータにアルゴリズムを書かせるレベル3(機械学習)が含まれます。さらに、レベル3の中には、特徴量までもコンピュータに選ばせるレベル4(ディープラーニング)が含まれています。
さて、機械学習の具体的な方法は幾つかありますが、注目すべきはニューラルネットワークという方法です。この方法を応用してディープラーニングが生まれたのですが、現時点の私には、ニューラルネットワークの概念をうまく理解していません。自分の言葉で説明できるようになったら、ブログで発信したいと思います。