こんにちは!DataIntelligenceチームの垣内です。
私事ですが、4月25日にAzure Tech Lab@Microsoft Base Kobe にて登壇してきました!今月26日にも拡大版としてイベントが開催されます。
いずれのイベントも、今話題のChatGPTやGPTモデル・Azure OpenAI Serviceがテーマとなっています。
Azure Tech Lab Plus@Microsoft Base Kobe - connpass
今回は、登壇時に利用した「埋め込みモデル」についてご紹介いたします。Azure OpenAI Serviceとは何かから復習したい方は、こちらの記事をご覧ください。 kdl-di.hatenablog.com
おさらい
2023年4月時点でAzure OpenAI Serviceから次のモデルが提供されています。今回はオレンジの枠で囲われている「埋め込み」というモデルを利用しています。
GTP-3やGPT-4といったGPTシリーズがベースとなり、対話型インターフェーズのモデルとして「ChatGPT」、ソースコードを理解・生成するモデルとして「Codex」、文章検索などができるモデルとして「埋め込み」が開発・提供されています。
特化されたモデルの中でも「埋め込み」の正体だけはぼんやりしていますね。「埋め込み」とは何かを理解するため、前提となる自然言語処理についておさらいしていきます。
AIがテキストを理解する仕組み
そもそもAIやコンピュータは、一体どのように人間の言葉を理解しているのでしょうか?言葉のみならず、画像や音を生成できるのも不思議ですよね。
画像や音、言葉は「非構造化データ」と呼ばれ、これらのデータを「ベクトル」という数値に変換したものがAIやコンピュータや入力されています。
ベクトル化する理由
画像や自然言語(言葉・文章)といった非構造化データをベクトル化する理由として次の3つが挙げられます。計算ができる事がポイントになってきます。
- コンピュータは電子計算機。計算に特化しており、人間の持つ概念はない。
- 機械学習や深層学習モデル(≒AIモデル)は数式である
- ベクトルで計算ができるので、距離を測定したり類似度を求められる
単語のベクトル化すると、類似語を探すだけでなく単語同士で足し算引き算といった計算ができるようになります。
埋め込みモデルとは?
画像や自然言語といった非構造化データをベクトル化することが「埋め込み」がどのように関係しているのでしょうか?
「埋め込み」とは何なのか?
そもそも「埋め込み」とは何なのでしょうか?
先ほど「自然言語(言葉・文章)をベクトル化(数値化)」するといいましたが、これには続きがあります。
言葉・文章をベクトル化する方法には古典的手法の「One-Hot表現」から最新の「分散表現」まで色々あります。分散表現は、またの名を「埋め込み表現」といいます。
出てきました!!!埋め込み!!
そう、埋め込みモデルの「埋め込み」とは、文章をベクトル化することを意味しているのです。なんとなく正体がわかってきましたね!
※補足:分散表現で変換された単語は、数百次元のベクトルに変換されます。
できる事
つまりこの「埋め込みモデル」は、入力された自然言語をAIが理解できるように数百次元のベクトルに変換するモデルということがお判りいただけたでしょうか?
そして、ベクトルに変換することで計算がでるようになります。
1つ前の画像にて「天使」の類語を求めたり、「王様-男+女」という計算をしていました。これはごく一部のできる事ですが、これ以外にも次のような事ができます。
できること | 詳細 |
---|---|
検索 | 入力文字列と文書の関連性を求め、結果をランク付けしてランク順に回答する |
クラスタリング | テキスト文字列を類似している文字列同士でグループ化する |
レコメンド | 関連する文字列を持つアイテムを推奨する |
異常値検出 | 関連性の低い異常値を特定する |
多様性測定 | 類似性分布を分析する |
分類 | テキスト文字列を最も類似したラベルで分類する |
ChatGPTやGPT-3では学習されていないデータ、例えば社内ドキュメントやマニュアルを検索したい時は埋め込みモデルを使う想定がなされています。
埋め込みモデルの使い方
では埋め込みモデルが何かがわかった所で、実際に使えるようになるためのアーキテクチャをご紹介いたします。
意外と手間がかかるのが「①FAQやマニュアルの文章をベクトル化してデータベースに保存しておく」という処理です。
ノイズの除去や個人情報の排除といった前処理に手間を要するだけでなく、8192トークンまでという制限があります。
また、データベースに保存したデータが検索結果となるので、区切るのも実は時間や労力が必要だったりします。
まとめ
今回はあまり言及されていない「埋め込みモデル」について自然言語処理をおさらいしつつご紹介いたしました。事前知識がないととっつきにくいモデルですが、埋め込みモデルが使えるようになると一気にAI活用の幅が広がることは間違いないでしょう。まだまだ出たばかりのサービスなので、アップデート情報をチェックしておきましょう!