機械学習の手法を使用して問題を解決する場合、適切なデータを持つことが重要です。残念ながら、生データは「汚れた」状態や構造化されていない状態であることが多いです。自然言語処理 (NLP) の専門家は、扱うデータがテキストであるため、このことをよく知っています。ほとんどの機械学習アルゴリズムは生の文字列を入力として受け入れないため、単語埋め込み法を使用してデータを変換してから学習アルゴリズムに入力する必要があります。しかし、これはテキスト データにのみ当てはまるわけではありません。カテゴリ機能の形で、他の標準的な非自然言語処理タスクにも存在する可能性があります。実際、私たちの多くはこの分類機能のプロセスに苦労していますが、このシナリオでは単語埋め込み方法はどのような役割を果たすのでしょうか? この投稿の目的は、単語埋め込み手法 Word2Vec (Mikolov 他、2013) を使用して、多数のモダリティを持つカテゴリ特徴を、使いやすい数値特徴の小さなセットに変換する方法を示すことです。これらの機能は使いやすいだけでなく、複数のモダリティ間の関係をうまく学習することができ、これは従来の単語埋め込みが言語を処理する方法と非常によく似ています。 ワード2ベクトル彼が付き合っている人たちを見れば、彼の意図がわかるでしょう。 (ファース、JR 1957.11) 上記は Word2Vec の目標を正確に説明しています。つまり、単語の近傍 (コンテキストとも呼ばれる) を分析して単語の意味を判断しようとします。この方法には、CBOW モデルと Skip-Gram モデルという 2 つの異なるスタイルのモデルがあります。コーパスが与えられると、モデルは各文の単語をループし、現在の単語に基づいて隣接する単語 (コンテキスト) を予測するか、現在のコンテキストに基づいて現在の単語を予測します。前者で説明した方法は「Skip-Gram」と呼ばれ、後者は「連続バッグ オブ ワード (CBOW)」と呼ばれます。各コンテキスト内の単語数の制限は、「ウィンドウ サイズ」と呼ばれるパラメータによって決まります。 したがって、Skip-Gram 方式を選択した場合、Word2Vec は浅いニューラル ネットワーク、つまり、1 つの隠し層のみを持つニューラル ネットワークを使用して単語の埋め込みを学習します。ネットワークは最初に重みをランダムに初期化し、次に単語を使用してコンテキストを予測し、トレーニング プロセス中にこれらの重みを繰り返し調整して、エラーを最小限に抑えます。比較的成功したトレーニング プロセスの後、ネットワーク重み行列と単語のワンホット ベクトルを乗算することで、各単語の単語ベクトルを取得できることが期待されます。 注: テキスト データを数値で表現できるようになるだけでなく、結果として得られる埋め込みでは、単語間の興味深い関係も学習します。この関係を使用して、「王と女王の関係は、父親と ... の関係と似ていますか?」などの質問に答えることができます。 Word2Vec についてさらに詳しく知りたい場合は、このスタンフォード大学のコースまたは TensorFlow チュートリアルをご覧ください。 応用Kwyk プラットフォーム (https://www.kwyk.fr/) ではオンライン数学演習を提供しています。教師は生徒に宿題を割り当て、演習が完了するたびにデータが保存されます。その後、収集したデータを使用して各生徒のレベルを評価し、向上を支援するためにカスタマイズされた修正を行います。解決した演習ごとに、次の情報を区別するのに役立つ一連の識別子を保存します: この演習は何ですか?その質問に答えた学生は誰ですか?それはどの章に属しますか? .......これに加えて、生徒が問題をうまく解けたかどうかに応じて、0 または 1 のスコアも保存します。次に、生徒のスコアを評価するには、このスコアを予測し、分類器から生徒の成功確率を取得する必要があります。 ご覧のとおり、当社の機能の多くはカテゴリ別です。通常、モダリティの数が十分に少ない場合は、n モーダルのカテゴリ特徴を n-1 ダミー変数に変換し、トレーニングに使用することができます。しかし、モードが数千に及ぶ場合(一部のアプリケーションの場合がそうです)、ダミー変数に依存することは非効率的かつ非実用的になります。 この問題を解決するために、Word2Vec をちょっとしたトリックを使って使用し、カテゴリ特徴をかなり少数の使用可能な連続特徴に変換します。この考え方を説明するために、「exercise_id」を例に挙げてみましょう。exercise_id は、どの演習が解かれたかを示すカテゴリ特徴です。 Word2Vec を使用するには、アルゴリズムに入力される一連の文であるコーパスを用意する必要があります。ただし、元の特徴は単なる ID のリストであり、それ自体はコーパスではありません。その順序は完全にランダムであり、類似の ID には隣接する ID に関する情報が一切含まれません。私たちの手法では、教師からの課題を「文」、つまり一連の exercise_id として扱います。その結果、すべての ID はレベル、章などのラベルとともに自然にグループ化され、Word2Vec はこれらの文に対して直接、演習埋め込み (Word 埋め込みに対応) の学習を開始できるようになります。 実際、これらの人工的な文章があるからこそ、Word2Vec を使用して美しい結果を得ることができるのです。 ご覧のとおり、結果の埋め込みは構造化されています。実際、3D で投影されたエクササイズのクラウドは螺旋状になっており、高レベルのエクササイズが低レベルのエクササイズのすぐ後に続きます。これは、埋め込みが異なるレベルの演習を区別することを正常に学習し、同様のレベルの演習が一緒に配置されるように演習を再グループ化したことを意味します。しかし、それだけではありません。非線形次元削減技術を使用すると、埋め込み全体を同じ特徴を持つ実数値変数に削減できます。言い換えれば、演習の複雑さに関する特性があり、これは 6 年生では最小で、演習が複雑になるにつれて増加し、12 年生で変数の最高値に達します。 さらに、ミコロフが英語の単語で行ったのと同じように、埋め込みは練習問題間の関係も学習します。 上の図は、埋め込みが学習できる関係の例をいくつか示しています。したがって、「数を足す習慣は、数を減算する習慣と同じか?」と尋ねると、埋め込みによって次の答えが得られます。「数を減算する習慣」具体的には、次の問題を取り上げます: [減算(数値)] の埋め込み - [加算(数値)] の埋め込みを、学生が時間 (時間、分など) を加算するように求められる学生の演習の埋め込みに追加すると、最も近い埋め込みは時間の減算を伴うものになります。 結論は要約すると、単語埋め込み技術は、テキスト データを機械学習アルゴリズムで直接使用できる実数値ベクトルに変換する場合に役立ちます。単語埋め込み技術は主に機械翻訳などの自然言語処理アプリケーションで使用されますが、Kwyk での使用例を具体的に示すことで、これらの技術がカテゴリ特徴処理にも役立つことを示しました。ただし、Word2Vec などの技術を使用するには、コーパス、つまりコンテキストが暗黙的に作成されるようにラベルが配置された文のセットを構築する必要があります。上記の例では、ウェブサイトで提供されている課題を使用して演習用の「文」を作成し、演習の埋め込みを学習しました。その結果、エクササイズ間の関係性をうまく学習でき、元のラベルセットよりも有用な新しい数値特徴を取得できるようになりました。 カテゴリ特徴に word2vec を使用するというアイデアを思いついた、Kwyk の開発者の一人である Christophe Gabar に心から感謝します。 オリジナルリンク: https://medium.com/towards-data-science/a-non-nlp-application-of-word2vec-c637e35d3668 |
<<: DeepMind: 人工知能と神経科学を組み合わせて好循環を実現
スタンフォード大学人工知能研究所の公式ツイッターによると、11月20日、フェイフェイ・リー氏がスタン...
北京ビジネスデイリー(陳偉記者) 知能ロボットは記者、シェフ、囲碁の達人になった後、最近は生放送業界...
多くの機械学習技術は、急速に概念実証から人々が日常的に頼りにする重要なテクノロジーの基盤へと移行して...
11月1日、2018年百度世界大会が北京で開催されました。「YES AI DO」をテーマにしたこの大...
[[356205]]私は最近、Kafak のソース コードをいくつか研究し、Kafak の改良された...
執筆者:Qianshan過去 1 か月間、OpenAI に関する物議を醸す報道が多くありました。一方...
6月30日、ソーシャルメディアプラットフォームはユーザーエクスペリエンスを向上させるためにAIアル...
Amazon Web Services Inc. は本日、自社のエコシステムにおいて、企業顧客が独自...
最近、 MindSporeは、北京大学生物医学フロンティアイノベーションセンター( BIOPIC )...
ディープラーニングに取り組む過程で、著者が最も興味を持ったのは、オブジェクトを分類するためのいくつか...
[[391671]]気候変動は今日世界が直面している最大の課題となっています。国連は、2021年が地...
PyTorch は、次の 2 つの高レベル機能を提供する Python パッケージです。強力な GP...