エンベッディングは、単語、画像、動画などの実世界のオブジェクトを、コンピュータが処理できる形で表現します。エンベッディングは類似検索を可能にし、AIの基礎となります。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflare が毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
エンベッディングとは、機械学習モデルやセマンティック検索アルゴリズムによって利用されるように設計された、テキスト、画像、音声などの値やオブジェクトを表現したものです。これらのオブジェクトを、それぞれが持つまたは持たない要因や特徴、属するカテゴリーに従って数学的な形に変換します。
本質的には、エンベッディングは機械学習モデルが類似オブジェクトを見つけることを可能にするものです。写真や文書があれば、エンベッディングを使った機械学習モデルは似たような写真や文書を見つけることができます。エンベッディングは、コンピュータが単語と他のオブジェクトの関係の理解を可能にするため、人工知能(AI)の基礎となります。
例えば、この2次元空間の右上にあるドキュメントは、互いに関連している可能性があります:
技術的には、エンベッディングは、機械学習モデルが各オブジェクトに関する意味のあるデータを取得する目的で作成したベクトルとなります。
数学において、ベクトルとは、ある次元空間の点を定義する数値の配列を意味します。より実用的な言葉で言えば、ベクトルとは1989、22、9、180のような数字の羅列のことです。各数値は、オブジェクトが指定された次元における位置を示しています。
機械学習では、ベクトルを使用することで、類似したオブジェクトを検索することが可能になります。ベクトル探索アルゴリズムは、ベクトルデータベースで近接する2つのベクトルを見つけるだけで済みます。
これをさらに理解するために、緯度と経度を例に考えてみます。2つの次元(経度と緯度)により、地球上のあらゆる場所の位置を示すことができます。カナダのブリティッシュコロンビア州バンクーバー市は、緯度経度座標{北緯49°15'40"西経123°06'50"}として表せます。この2つの値は、単純なベクトルと言えます。
では、バンクーバーに非常に隣接した都市を探す時を想像してみてください。人間なら地図を見るだけで済みますが、機械学習モデルは代わりに緯度と経度(またはベクトル)を見た上で似たような緯度と経度の場所を見つけます。バーナビー市は、北緯49°15'40"、西経123°06'50"に非常に近い、北緯49°16'、西経122°58'に位置しています。したがって、モデルはバーナビーがバンクーバーの近くに位置していると正しく結論づけることができるのです。
さて、バンクーバーに近いだけでなく、同じような規模の都市を探そうとする時を見てみましょう。このロケーションのモデルに、緯度と経度に加え、3つ目の「次元」として人口規模を加えてみます。人口を各都市のベクトルに加え、緯度と経度をY軸とX軸とし、人口規模をZ軸のように扱うことができます。
バンクーバーのベクトルは、これにより{北緯49°15'40"、西経123°06'50"、662,248*}となります。この第3の次元が加わったことで、バーナビーの人口は249,125*人に過ぎず、もはやバンクーバーに特別近いわけではなくなります。このモデルでは、代わりに{北緯47°36'35"、西経122°19'59"、749,256**}のベクトルを持つ米国ワシントン州シアトル市が答えとなる場合があります。
*2021年現在。
**2022年現在。
これは、ベクトルと類似検索がどのように機能するかをかなり単純な例として示したものです。しかし、機械学習モデルを役立てるためには、3次元以上の次元を生成し、より複雑なベクトルを生成する必要があります。
例えば、どのテレビ番組が互いに類似しており、その結果同じ人々が見ている可能性が高いかについて、モデルはどうやって見分けることができるのでしょうか?エピソードの長さ、エピソード数、ジャンルの分類、共通の視聴者数、各番組の出演者、各番組の放送開始年度など、考慮すべき要素はいくらでもあります。これらはすべて"「次元」となり得、各ショーはこれらの各次元に沿った点として表されます。
多次元ベクトルは、シチュエーションコメディの『となりのサインフェルド』とホラー番組『ウェンズデー』の類似性の判断に役立ちます。『となりのサインフェルド』の放送開始年は1989年、ウェンズデーは2022年です。2つの番組のエピソードの長さは異なり、『となりのサインフェルド』は22~24分、『ウェンズデー』は46~57分となっています。このベクトルを見ることで、これらの番組がテレビ番組の次元表現において大きく異なる点を占めている可能性が高いことがわかります。
テレビ番組 | ジャンル | 放送開始年度 | エピソードの長さ | シーズン(2023年まで) | エピソード(2023年まで) |
---|---|---|---|---|---|
となりのサインフェルド | シチュエーションコメディ | 1989 | 22~24 | 9 | 180 |
水曜日 | ホラー | 2022 | 46~57 | 1 | 8 |
緯度と経度でやったのと同じように、ただしさらに多くの値を用い、これらをベクトルとして表すことができます:
となりのサインフェルドベクトル:{1989年、22~24、9、180}。
ウェンズデーベクトル:{ホラー]、2022、46~57、1、8}.
機械学習モデルは、シチュエーションコメディの『チアーズ』が『となりのサインフェルド』に似ていると認識するかもしれません。このタイトルは、ジャンルが同じ、1982年デビュー、1話21~25分、11シーズン、275エピソードとなっています。
となりのサインフェルドベクトル:{1989年、22~24、9、180}。
チアーズベクトル:{1982年、21~25、11、275}。
前述の例では、都市は緯度と経度の2つの次元に沿った点に、人口という第3の次元を加えました。テレビ番組のベクトルの位置については、5つの側面から分析しました。
機械学習モデル内のテレビ番組は、2つ、3つ、5つの次元ではなく、おそらく100次元~1,000次元に沿った点となります。
エンベッディングとは、ディープラーニングを使ってベクトルを作成するプロセスのことです。"エンベッディング" は、このプロセスの出力であり、言い換えれば、ディープラーニングモデルが類似性検索のために作成するベクトルである。
シアトルとバンクーバーは緯度と経度の値が近く、人口も同程度であるように、互いに近いエンベッディングは類似していると考えることができます。エンベッディングを使うことで、アルゴリズムは関連するテレビ番組を提案したり、似たような場所を見つけたり、言語モデルのように一緒に使われる可能性が高い単語、あるいは互いの類似点を特定したりすることができます。
ニューラルネットワークは、人間の脳のアーキテクチャを模倣した深層学習モデルです。脳が互いに電気インパルスを発信するニューロンで構成されているように、ニューラルネットワークは入力が所定の閾値を超えると互いに通信する仮想ノードで構成されています。
ニューラルネットワークは、入力レイヤー、出力レイヤー、そしてその間にある任意の数の「隠れ」レイヤーから構成されています。隠れレイヤーは、モデルがどのように定義されようとも、多くの方法で入力を変換することができます。
エンベッディングの生成は、隠れレイヤーで行われます。通常、追加レイヤーが入力を処理する前に行われます。そのため、例えば人の手ですべてのテレビ番組が100の異なる次元のどこに位置するかを定義する必要はありません。その代わり、ニューラルネットワークの隠れレイヤーが自動的にそれをやってくれるのです。そして、このエンベッディングを使って他の隠れレイヤーがさらにテレビ番組を分析し、似たようなテレビ番組を見つけることができます。最終的に出力レイヤーは、視聴者が見たいと考える可能性のある他の番組を提案することができるのです。
このエンベッディングレイヤーの作成には、まず手作業が必要になります。プログラマーは、エンベッディングの生成基準、含める次元などの例をニューラルネットワークに与える必要があります。プログラマーは、より良い推奨事項を生成するためにモデルを微調整し続ける必要があるかもしれないものの、最終的にはエンベッディングレイヤーはそれ自体で動作するようになります。
ChatGPTなどのAIツールに使われるような大規模な言語モデル(LLM)の場合、エンベッディングはさらに一歩進められて用いられます。単語そのものだけでなく、すべての単語の文脈も、エンベッディングとなります。文章、段落、記事全体の意味が検索、分析対象となります。これにはかなりの計算パワーが必要になるものの、クエリのコンテキストはエンベッディングとして保存できるため、将来のクエリのための時間と計算パワーを節約できるようになります。
Cloudflare WorkersでAI搭載アプリケーションを構築したい開発者のために、クラウドフレアはWorkers AIを提供しています。また、Cloudflareはグローバルに分散されたベクターデータベースであるVectorizeも提供しています。これらのサービスを組み合わせることで、より速く、より簡単に、より手頃な価格でのエンベッディングデータの生成とクエリが実現します。これにより、開発者はバックエンドのインフラを立ち上げることなくAIアプリを作成することができるようになります。VectorizeとWorkers AIについて詳細をリンクよりお読みいただけます。