打ち上げ!最初のMLプロジェクトを始める方法 🚀
Launching! How to start your first ML project 🚀
機械学習の世界に初めて入る人々は、2つの頻繁な stumbling block によく遭遇します。最初の stumbling block は、学習するための適切なライブラリを選ぶことであり、選択肢が多い場合には困難な課題です。適切なライブラリを選び、いくつかのチュートリアルを終えた後でも、次の問題は最初の大規模プロジェクトを考え出し、適切にスコープを設定して学習を最大化することです。これらの問題にぶつかったことがある場合、またはツールキットに追加する新しい ML ライブラリを探している場合は、正しい場所にいます!
この記事では、Sentence Transformers (ST) を例に挙げながら、新しいライブラリを使って0から100まで進むためのいくつかのヒントを紹介します。まず、STの基本的な機能を理解し、学習に適した素晴らしいライブラリであることを強調します。次に、最初の自己主導プロジェクトに取り組むための戦術を共有します。また、最初のSTプロジェクトの構築方法と、その過程で学んだことについても話しましょう 🥳
Sentence Transformers とは何ですか?
Sentence embeddings?Semantic search?Cosine similarity?!?! 😱 数週間前まで、これらの用語は私にとって混乱して頭がクラクラするほどでした。Sentence Transformers は、言語や画像データを扱うための強力で多機能なライブラリであると聞き、それを使って遊びたいと思っていましたが、自分の力量を超えてしまうのではないかと心配していました。しかし、実際には、私はまったく間違っていました!
Sentence Transformers は、Hugging Face が統合しているライブラリの一つであり、以下のように説明されています:
文、段落、および画像のための密なベクトル表現を計算します
要するに、Sentence Transformers は次の質問に答えます:もしも文を多次元のベクトル空間上の点として扱うことができたらどうなるでしょうか?これはつまり、STに任意のテキスト文字列(例:「Pythonでコーディングを学んで本当に良かった!」)を与えると、ベクトル(例:[0.2, 0.5, 1.3, 0.9]
)に変換してくれるということです。別の文(例:「Pythonは素晴らしいプログラミング言語です。」)は、異なるベクトルに変換されます。これらのベクトルは「埋め込み」と呼ばれ、機械学習において重要な役割を果たします。もしもこれらの2つの文が同じモデルで埋め込まれた場合、両方が同じベクトル空間に存在し、さまざまな興味深い可能性が生まれます。
STを特に有用にする要素は、いくつかの埋め込みを生成した後、組み込みのユーティリティ関数を使用して、一つの文が他の文とどれだけ類似しているかを比較できることです。それには「コサイン類似度」関数を使用する方法があります。STでは、煩わしい数学をすべてスキップし、非常に便利な util.cos_sim
関数を呼び出すことで、埋め込まれた文が共有するベクトル空間でどれだけ「類似している」かを示す-1から1までのスコアを取得できます。スコアが大きいほど、文はより類似しています!
類似性による文の比較は、文や段落のコレクションがある場合、セマンティックサーチと呼ばれるプロセスを使用して特定の検索クエリに一致する文を迅速に見つけることができます。これの具体的な応用については、GitHub のコード検索エンジンを作成するためのこのチュートリアルや、Sentence Transformers を使用した FAQ エンジンの構築に関するこの別のチュートリアルをご覧ください。
なぜ Sentence Transformers の使用を学ぶべきですか?
まず第一に、埋め込みを生成するための最先端のモデルを使って実践的な経験を得るための手軽な方法を提供しています。自分自身の文の埋め込みを作成することは、テキストとの作業における現代のモデルの動作原理を理解するのに役立つ強力な学習ツールであり、アイデアの創造力も高めます!Jupyter ノートブックで msmarco-MiniLM-L-6-v3 モデルを読み込んで数分後、いくつかの文を埋め込み、STのユーティリティ関数を実行するだけで、楽しいプロジェクトのアイデアがたくさん浮かびました。
第二に、Sentence Transformers は、多くの重要な ML の概念へのアクセスポイントとなる使いやすいライブラリです。例えば、クラスタリング、モデルの蒸留、さらには CLIP を使ったテキストから画像への作業について学ぶことができます。実際、Sentence Transformers は GitHub でほぼ 8,000 のスターを獲得し、3,000 以上のプロジェクトやパッケージが依存しているほど、非常に多機能なライブラリです。公式ドキュメントに加えて、コミュニティによって作成された豊富なコンテンツ(この記事の末尾にいくつかのリンクがあります 👀)もあり、研究分野でも人気があります。
サード、埋め込みはいくつかの産業アプリケーションにおいて重要です。Googleの検索では、テキストとテキスト、テキストと画像を照合するために埋め込みを使用しています。Snapchatでは、「適切な広告を適切なユーザーに適切なタイミングで表示する」ために埋め込みを使用しています。また、Meta(Facebook)では、ソーシャル検索に埋め込みを使用しています。言い換えれば、埋め込みを使用することで、チャットボット、推薦システム、ゼロショット分類器、画像検索、FAQシステムなどを構築することができます。
さらに、Hugging Faceの多くの統合もサポートされています 🤗。
最初のプロジェクトに取り組む
Sentence Transformersをチェックし、ドキュメントのいくつかの例を実行したとしましょう…そして次は?自主的な最初のプロジェクト(私はこれらをロケットランチプロジェクトと呼んでいます🚀)は、学習の旅での大きな一歩であり、それを最大限に活用したいと思うでしょう!新しいツールを試すときに私が常に守るレシピを紹介します。
- ツールの可能性に関する情報を整理する : Sentence Transformersの場合、文の埋め込みの生成、文の比較、複雑な検索タスクのための検索と再ランキング、クラスタリング、セマンティックサーチによる類似ドキュメントの検索などが含まれます。
- 興味深いデータソースを考える : Hugging Face Hubには膨大なデータセットがありますし、awesome-public-datasetsのようなリストも参考にできます。予想外の場所に興味深いデータがあることもよくあります。例えば、自治体には公開データポータルがあるかもしれません。データとの作業にかなりの時間を費やすことになるので、興味を引かれるデータセットを選ぶことをおすすめします。
- ある程度慣れているサブツールを選ぶ : なぜ一度に1つのツールの学習に制限する必要がありますか?「分散練習」(または「スペーシングリピティション」)とは、学習を複数のセッションに分散させることであり、新しい素材を学ぶための効果的な戦略であることが証明されています。新しいスキルを練習する場面においても、それがメインの学習対象でなくても、この方法を積極的に活用することができます。最初のプロジェクトでは、サブツールには1つだけ含めることをおすすめします。
- アイデアを出す : 最初の3つのステップから要素を組み合わせた異なる組み合わせについてアイデアを出してみましょう!アイデアは悪いアイデアはありませんし、私は通常、品質よりも量を重視します。やがて、特別な好奇心をかきたてるアイデアがいくつか見つかるでしょう ✨
最初のSentence Transformersプロジェクトでは、人気のある歌詞データセットが手元にあることを思い出しました。これを活用して、STのセマンティックサーチ機能と組み合わせて楽しいプレイリストジェネレータを作成できることに気付きました。ユーザーにテキストプロンプト(例:「ワイルドで自由な気分です!」)を尋ねることができれば、そのプロンプトにマッチする歌を見つけることができるかもしれません!また、Gradioでデモを作成しており、最近は新しくリリースされたGradio Blocksを使ってスキルをスケーリングアップする作業も行っていたため、サブツールとしてプロジェクトを紹介するためのクールなBlocksベースのGradioアプリを作成することにしました。一石二鳥の機会を逃さないようにしましょう 🦆🐓
こちらが最終的に完成したものです!この構築方法について解説する将来のブログ記事にご期待ください 👀
最初のプロジェクトでどのような学びが得られますか?
すべてのプロジェクトはユニークですので、学習の旅もユニークになります!学習の「構成主義」理論によれば、知識は深く個人的であり、既に持っている他の知識との関連性を積極的に作り出すことで構築されます。私のプレイリストジェネレータプロジェクトでは、例えば、Sentence Transformersがサポートするさまざまな事前学習モデルについて学ばなければならず、自分のユースケースに合ったモデルを見つける必要がありました。Hugging Face SpacesでGradioを使用していたため、埋め込みをHugging Face Hubにホストし、アプリに読み込む方法について学びました。さらに、多くの歌詞を埋め込む必要があったため、埋め込みのプロセスを高速化する方法を探し、Sentence Transformersのマルチプロセッササポートについても学ぶ機会がありました。
最初のプロジェクトを経験した後、さらに取り組むべきアイデアがいくつも浮かぶことでしょう!楽しんで、hf.co/join/discord でプロジェクトや学んだことを共有するのを忘れないでください 🤗
さらに読む:
- 埋め込みの入門
- 文の変換とHugging Face
- 意味検索のためのSentence_Transformers – Omar Espejel 著
- Pinecone.io – 文の埋め込み
- 文の埋め込み – John Brandt 著
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles