SentenceTransformer : テキストからEmbeddingを取得する言語処理モデル

Kazuki Kyakuno
axinc
Published in
7 min readJun 12, 2023

ailia SDKで使用できる機械学習モデルである「SentenceTransformer」のご紹介です。エッジ向け推論フレームワークであるailia SDKailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。

SentenceTransformerの概要

SentenceTransformerはBERTをFineTuningしたモデルです。テキストからテキストの意味を示す特徴ベクトルであるEmbeddingを取得するのに最適な形でFineTuningされています。

テキストのEmbeddingを取得するAPIとしては、OpenAIのtext-embedding-ada-002が有名ですが、そこまでの精度が必要ない場合は、SentenceTransformerを使用することで、オフラインでAPI使用料不要で実行可能になります。

モデルサイズはマルチリンガルモデルで1.1GBです。

SentenceTransformer

SentenceTransformerのアーキテクチャ

SentenceTransformerでは、BERTのトークンごとのEmbeddingをPoolingすることで、テキストのEmbeddingを計算し、同じ意味のテキスト間のEmbeddingの距離を最小化するようにFine Tuningされています。

出典:https://arxiv.org/pdf/1908.10084.pdf

単純にBERTのトークンごとのEmbeddingの平均を使用した場合はAvgで54.81の精度ですが、Fine Tuningすることで、76.68まで精度が改善しています。

出典:https://arxiv.org/pdf/1908.10084.pdf

マルチリンガルモデル

SentenceTransformerはマルチリンガルモデル(paraphrase-multilingual-mpnet-base-v2)が公開されています。日本語を含む複数の言語(50+ languages)で共通のEmbeddingを取得可能です。Embeddingの次元数は768です。

マルチリンガルモデルは知識蒸留を用いて、多言語のEmbeddingを単一言語のEmbeddingに変換しています。

出典:https://arxiv.org/pdf/2004.09813.pdf

Tokenizer

SentenceTransformerでは、XLMRoBERTaのTokenizerを使用しています。Sentence Pieceを使用しており、Sentence PieceのSentencePieceProcessorの主力シンボルを並べ替えることで、XLMRoBERTaのトークンを取得可能です。

トークンの変換ルール

ailia SDKから使用する

ailia SDKから使用するには、下記のようにします。

$ python3 sentence_transformer_japanese.py -i input.txt

入力したテキストに対して質問を行い、質問のEmbeddingと文章のEmbeddingの距離を計算し、最も近いテキストを出力することが可能です。

User (press q to exit): nnapiの速度
Text: 実際、弊社でもSnapdragon 8+ Gen1とyolox_tinyにおいて、CPU(float)に比べてNNAPI NPU(int8)で15倍高速に動作することを確認しています。 (Similarity:0.592)

マルチリンガルモデルなため、英語でもクエリすることが可能です。

User (press q to exit): How fast nnapi?
Text: 実際、弊社でもSnapdragon 8+ Gen1とyolox_tinyにおいて、CPU(float)に比べてNNAPI NPU(int8)で15倍高速に動作することを確認しています。 (Similarity:0.691)

ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。

--

--

Kazuki Kyakuno
axinc
Editor for

CTO — ax Inc. , Managing Director — AXELL