機械学習を行えば、インプットされるデータをもとにあらゆる目的のデータを推測・分類できますよね。その範囲はAI(人工知能)にもおよび、数々の先端技術の開発やデータソリューションの要としてなくてはならない存在です。そして、この機械学習に使われるのが、テンソルです。
テンソルは、多次元データの集合体で、AI(人工知能)の画像認識、音声認識、自然言語処理、言語翻訳などに欠かせないディープラーニング(深層学習)で必要なデータセットとして広く活用されています。テンソルをうまく使って膨大なデータをAI(人工知能)に反復学習させ、パターン化に成功すれば、有効なシステムやプロダクトが完成します。
この記事で機械学習の学びに有効なテンソルについて理解して、AI関連の先進的な技術やシステムの開発に役立てましょう。
そこで今回は、テンソルと機械学習の関連性や応用例、GoogleのTensorFlowとの関連性などについてお伝えします。
テンソルとは
テンソルとは多次元配列のことで、行列の概念を一般化したものです。0次元の配列を「スカラ」、1次元を「ベクトル」、2次元を「行列」と呼び、それ以上は、4次元、5次元…と延々と高次元までつづき、n次元では「n次元配列」と呼びます。
続いて「1階のテンソル」である「ベクトル」は、スカラの数字データをひとまとまりにした集合体です。さらにベクトルを縦と横の2方向に広げたものが「2階のテンソル」である「行列」です。これ以上は「3階のテンソル(3次元)」「4階のテンソル(4次元)」…と延々と続きます(n次元)。
簡単な例を見てみましょう。一郎、さくら、翔平のそれぞれの1学期の中間テスト英語と数学の点数を表にします。
英語 | 数学 | |
一郎(ID 1) | 80 | 90 |
さくら(ID 2) | 75 | 88 |
翔平(ID 3) | 90 | 65 |
例えば、3人の英語の点数をひとまとめにした(80,75,90)が縦方向のベクトルです(1階テンソル)。また、一郎の英語と数学の点数を求めたもの(ID 1,80,90)も横方向のベクトル(1階テンソル)です。次に3人の全データを表として見た場合は、縦3列、横3列の行列(2階テンソル)となります。
さらに、同じ3人のメンバーの、1学期期末テスト、2学期中間テストと期末テスト、3学期の学年末テストと合計5回のテスト分のデータを集める(行列の平面に対して上の軸方向に積み上げるイメージ)と3次元の3階テンソルとなります。
このように、テンソルは次元が高くなるほどに、データ量が増え続けていきます。
テンソルと機械学習との関連性
機械学習は、コンピュータ(機械)に何らかのデータをインプットすることで、ある目的に沿った予測や分類を可能にするアルゴリズムです。そのデータは特徴量ともいわれ、一般的により多くのデータ(特徴量)をコンピュータに学習させると、より精度の高い共通点やパターンを認識できるので、予測の的中率や分類の精度は高まります。この学習プロセスを支える大量のデータセットの一つが、多次元データの集合体である「テンソル」です。
しかし、これを可能にしているのは魔法でもなんでもなく、幼いころから長い時間をかけて何千、何万回、何十万回とドリブル、パス、シュート、セットプレーなどをコート内で繰り返してきた結果です。その無数の鍛錬により、ボールのハンドリングテクニックや空間認識能力などあらゆる感覚が総合的に研ぎすまされて、このパターンならここにパス、このタイミングなら相手の股からでも味方の手前にパスを通せる、などの判断と動作が瞬時に行えるようになります。
機械学習も同じ理屈です。同じテーマについてデータ量が多ければ多いほど、パターン認識がより確かなものとなり、一見複雑にみえる課題でも先のことが予測でききるとか、細やかな違いを見落とさずに分類・排除が可能になります。そして、このパフォーマンスの一助となるのが、大量の情報量を提供する多次元データ配列のテンソルです。
テンソルの応用例
テンソルは、AI(人工知能)のディープラーニングにも活用されます。ディープラーニングは、人間の脳の機能を模した数式モデルで機械学習を機能させる一手法であるニューラルネットワークを構築するアルゴリズムです。人間は、目で見たものを1次視覚野 → 2次視覚野と何層も経由することで、それが何であるかを最終的に認識します。が、機械もニューラルネットワークを使い、インプット情報を多くの層を経由させたうえで特徴量を抽出し、高い精度で認識結果を出力できるようになります。
具体的には、過去10年分の8月1日~31日までの31日間の「花火の売上数(話を分かりやすくするために花火は袋詰めの1種類だけとします)」、「最高気温」、「来店数」、「子どもの来店数」、「お菓子の売上高」の5項目のデータをテンソルとして用意します。(実際は、これとは比較にならないほど膨大なデータを使わなければ正確な予測はできません)
もちろんさまざまな考え方があるので、これらの仮説が正しいかは定かではありません。人の消費行動は、経済状態や家庭環境、人間関係、イベント、趣味嗜好、心理状況など無数の背景によって決められます。それをいちいち見抜いて発注数を予測するなど、人間には到底無理ですよね。
しかし、大量のデータと秀逸なアルゴリズムがあれば、そこから精度の高い予測値をはじき出すのもけっして不可能ではありません。
花火の売上数 | 最高気温 | 来店数 | 子供の来店数 | お菓子の売上高 | |
8月1日 | 100袋 | 31℃ | 6,500人 | 350人 | 560,000円 |
8月2日 | 96袋 | 32℃ | 7,010人 | 480人 | 628,000円 |
・・・ | ・・・ | ・・・ | ・・・ | ・・・ | ・・・ |
この場合、縦31行と横6列の行列(2次元配列)の2階のテンソルになります。さらに、同じ項目のデータが10年分なら、3階のテンソルとなります。このテンソルを使ってアルゴリズムを構築、さらに8月の1日ごとの予想最高気温のデータも加味すれば、より高い精度で8月1ヶ月の花火の売上見込み合計数が算出され、その数値を参考に適切な発注ができるでしょう。
テンソルとTensorFlowの関係性
TensorFlowは、Googleがオープンソースとして公開している機械学習向けのライブラリです。さらにディープラーニングに必要なニューラルネットワークを何層にも複雑に重ねる構造を構築するのにも非常に適しているため、世界中の多くのAI開発者に愛用されています。すでにTensor Flowを活用して、画像認識、画像検索、音声認識、自動翻訳など、あまたのAI(人工知能)技術が世に輩出されています。
そして、TensorFlowの大きな特徴が、データの読み込み、前処理、計算、状態、出力などの処理に対してテンソルをあつかっている点です。TensorFlowは、フロー(流れる)の名のごとく、大量のデータを多彩なタスクに流し込むことでAIプログラムなどを作成するので、ここにテンソルが使われます。
大量の画像情報を学習すれば、顔認証、自動運転のプログラムができますし、音声情報を学習すれば、個人の声や特定の鳥のなき声、決まったマシーンの機械音などを聞き分けることも可能です。
機械学習やディープラーニングの肝は「反復」と「パターン化」です。より多くのデータを繰り返し学習し、それが何であるか、どの様なときにそうなるのか、といった共通項を見いだして、具体的な製品やシステムとして落とし込めば、立派な商材となりえます。その手段としてTensorFlowは大きな役割を果たしており、そのTensor Flowと切っても切れないテンソルはAI(人工知能)開発になくてはならない存在といえるでしょう。
テンソルを活用すると、さらにこんなことができる
テンソルを活用すると実にさまざまな技術開発が可能になります。例えば、ソフトバンクは、Googleが出資するスタートアップと協力して、手話を日本語に翻訳する技術を開発、実用化に向けて動き出しています。
その仕組みは、スマホなどの端末を使って最短1秒以内に手話を翻訳、健聴者の話は音声がテキスト化されて聴覚障がい者に伝わる、というものです。このために、手話を記録した5万の動画データをAI(人工知能)に学ばせましたが、さらに精度を上げるためには、1単語だけでも100人以上のサンプルが必要だとか。
手話は人によって手や指の動かし方やスピード、さらに位置もまちまちなため、9割以上の精度が保証された単語もあれば、5割に満たないものもあるのが現状です。これからまだ大量のデータを入手するために、AI開発会社から手話の動画からCG(コンピュータ―グラフィックス)を自動生成する技術の提供を受け、CGを手本に手を動かせば、誰でもサンプル提供できる体制を構築しました。
このようにテンソルを使えば、言語のみならず、手話も翻訳できるうえ、AIに絵を描かせたり小説を書かかせることもできます。さらにそれぞれの機能をセパレートせず、画像、音声、文書など複数の情報を融合してより高度な認識作業を目指す「マルチモーダルAI」が新たな潮流になろうとしています。すると役所や駅などの窓口業務や介護施設、病院などでも大いに活躍の場が広がるに違いありません。
さて今回は、テンソルと機械学習の関連性や応用例、GoogleのTensorFlowとの関連性などについてお伝えしました。
テンソルとは多次元データの集合体のことで、行列の概念を一般化したものです。具体的には、0次元の配列を「スカラ」、1次元を「ベクトル」、2次元を「行列」と呼び、それ以上n次元では「n次元配列」と呼びます。テンソルは高次元になるほど、データの持つ特徴量(情報量)が増えるのが、特徴です。
機械学習では、同じテーマについてデータ量が多ければ多いほど、パターン認識がより確かなものとなり、一見複雑にみえる課題でも先のことが予測できるとか、細やかな違いを見落とさずに分類・排除が可能になります。そして、このパフォーマンスの一助となるのが、大量の情報量を提供する多次元データ配列のテンソルです。
テンソルはAI(人工知能)に欠かせないディープラーニングにも活用できるため、例えばスーパーの発注予測にも応用できます。テンソルにより精度の高い多次元データを学習に使えれば、高度な的中率をもつ自動発注システムの開発も可能で、食品ロスを減らしたり、在庫過多にならないために、すでに大手スーパーを中心に導入されています。
TensorFlowは、Googleが無料のオープンソースとして公開している機械学習やディープラーニング向けのライブラリです。世界的に愛用者が多いこのTensor Flowは、データの読み込み、前処理、計算、状態、出力などの処理に対してテンソルをあつかっています。
テンソルを使えば、言語のみならず、手話も翻訳できるうえ、AIに絵を描かせたり小説を書かすこともできます。さらにそれぞれの機能を融合して高度な認識作業を目指す「マルチモーダルAI」が新たな潮流になろうとしています。この動きが本格化すれば、テンソルの必要性はますます高まるに違いありません。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。