この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)から転載したものです。 このシナリオは悲惨です。失敗したソフトウェア ビルドの 2.5 GB のログ エントリ (300 万行) を参照して、100 万行目で発生したバグや回帰を見つけるのは、手動で行うにはあまりにも困難です。 幸いなことに、あなたを救う巧妙なトリックがあります。diff コマンドを実行して、これらの行を最新の成功したソフトウェア ビルドと比較し、バグによってログに予期しない行が生成されることを期待します。
標準の md5 diff コマンドは高速ですが、行間の文字レベルの違いを表示するため、少なくとも数十万の候補行が生成され、それらを調べることになります。機械学習の K 最近傍クラスタリング (logreduce が行うもの) とファジー差分アルゴリズムを使用すると、約 40,000 行の候補行が生成されますが、完了するまでに 1 時間かかります。 当社のソリューションは、20 分の計算時間で 20,000 行の候補を生成します。オープンソースであるため、実装に必要なのは Python コード約 100 行だけです。 このアプリケーションは、ニューラル埋め込み (単語や文章の意味情報をエンコードする) と局所性に敏感なハッシュ (ほぼ近いアイテムを同じビンに効率的に割り当て、遠いアイテムを別のビンに割り当て) を組み合わせています。組み込みシステムと LSH (Locality Sensitive Hashing) を組み合わせるのは素晴らしいアイデアですが、登場してからまだ 10 年も経っていません。 私たちは転移学習のために CPU 上の Tensorflow 2.2 を、K 近傍法のために scikit-learnNearestNeighbor を積極的に使用しました。実際には、モデルベースの最近傍解に適した、洗練された近似最近傍実装がいくつかあります。 組み込みシステムとは何ですか? なぜ必要なのですか? 典型的な出発点は、非構造化または半構造化テキストの重複排除、検索、類似性の問題を対象とする k-hot bag-of-words モデルを構築することです。このタイプの bag-of-words エンコーディングは、個々の単語とその数を含む辞書によく似ています。 「ログインエラー、チェックログ」という文を例に挙げます。
このエンコーディングはベクトルとして表すこともできます。この場合、インデックスは単語に対応し、値はカウントになります。 「log in error, checklog」を例にとり、これをベクトルでどのように表現できるかを示します。最初のエントリには「log」の単語数、2 番目のエントリには「in」の単語数などが含まれます。
このベクトルは多数のゼロで構成されていることに注意してください。ゼロ値のエントリは、辞書にはあるが文には現れない他のすべての単語を表します。可能なベクトルエントリの総数、つまりベクトルの次元は、言語辞書の容量です。通常はエントリが数百万以上になることがあります。しかし、巧妙なテクニックを使えば数十万まで減らすことができます。 ここで、「問題認証」の辞書とベクトル表現を見ると、最初の 5 つのベクトルエントリに対応する単語は新しい文にはまったく表示されません。
2 つの文は意味的には類似しており、本質的には同じ意味を持ちますが、同じ単語がまったく含まれていないため、語彙的には異なります。あいまい区別設定では、これらの文は類似しすぎて強調表示されない可能性がありますが、K 最近傍アルゴリズムの md5 および k-hot ドキュメント エンコーディングではこの機能はサポートされていません。 次元削減では、線形代数または人工ニューラル ネットワークを使用して、意味的に類似した単語、文、およびログ行を、「埋め込み」で表される新しいベクトル空間内に近く配置します。この例では、「ログにエラーがあります。ログを確認してください」には 5 次元の埋め込みベクトルがある可能性があります。
「認証の問題」は次のようなものである可能性があります:
k-hot bag-of-words の対応するものとは異なり、これらの埋め込みはコサイン類似度などの距離メトリックによって互いに近く、高密度の低次元表現はビルド ラインやシステム ログなどの短いドキュメントに役立ちます。 実際には、数千以上の辞書次元を、5 つの情報埋め込み次元ではなく 100 に置き換える必要があります。最先端の次元削減方法には、単語共起行列の特異値分解 (GloVe) や特殊なニューラル ネットワーク (word2vec、BERT、ELMo) などがあります。 クラスタリングとは何でしょうか? ログ記録アプリケーションの構築に戻りましょう。 Netflix は、時々ビデオをストリーミングするログ生成サービスだと冗談を言っています。例外監視、ログ処理、ストリーム処理などの領域では、1 秒あたり数十万件のリクエストが処理されます。テレメトリとログの領域に機械学習を適用する場合は、NLP ソリューションを拡張する必要があります。
画像ソース: unsplash そのため、私たちはテキスト重複排除のスケーリング、意味的類似性検索、テキスト外れ値検出などの問題に重点を置いています。これは、ビジネス上の問題をリアルタイムで解決する必要がある場合に唯一の解決方法です。 diff コマンド ソリューションでは、各行を低次元ベクトルに埋め込み (同時に埋め込みモデルを「微調整」または更新するオプション付き)、それをクラスターに割り当て、異なるクラスター内の行を「異なる」ものとして識別します。局所性に敏感なハッシュは、一定時間のクラスター割り当てとほぼ一定時間の最近傍検索を可能にする確率的アルゴリズムです。 LSH は、ベクトル表現をスカラー数、より正確にはスカラーのコレクションにマッピングすることによって機能します。標準的なハッシュ アルゴリズムの目的は、2 つの同一でない入力間の衝突を回避することですが、LSH の目的は、入力が離れている場合の衝突を回避し、入力が異なっていてもベクトル空間内で互いに近い場合に衝突を促進することです。 「ログエラー、チェックログ」の埋め込みベクトルは、2進数 01 (01 はクラスターを表します) にマッピングできます。 「認証の問題」の埋め込みベクトルは、同じ 2 進数 01 にマッピングされる可能性があります。 LSH はこのようにして、ファジー マッチング、逆問題、ファジー判別を実現します。LSH は、高次元の bag-of-words モデル ベクトル空間に早くから適用されていました。 LSH を使用すると、文字は同じメモリに逆方向に配置されます。 ビルド ログのテキスト外れ値検出に LSH とニューラル エンベッディングを適用すると、エンジニアはログ行の小さなサブセットを調べて、ビジネスに不可欠な可能性のあるソフトウェアのバグを特定して修正できるようになります。また、ほぼすべてのログ行のセマンティック クラスタリングをリアルタイムで取得することも可能になります。 現在、Netflix では Semantic LSH の利点をすべてのビルドに適用しています。セマンティック部分では、一見異なる項目を意味に基づいてグループ化し、外れ値レポートで注釈を付けることができます。 成熟したオープンソースの転移学習データ製品と SDK により、LSH を通じて非常に少ないコード行でセマンティック最近傍検索の問題を解決できます。私たちは、転移学習と微調整がアプリケーションにもたらすメリットに非常に驚いています。機械学習は、人々の作業をより効率的にするために、まだまだ多くのことができるはずです。 |
<<: 人工知能:テクノロジーは無邪気、善と悪は人間の心の中にある
>>: 機械学習プロジェクトでオプティマイザーを選択する方法
この記事では、ロボット開発で使用される最も人気のあるプログラミング言語のトップ10を見ていきます。そ...
COVID-19 パンデミックにより、企業はデジタル変革の取り組みを数か月、場合によっては数年も加速...
機械学習におけるデザインパターン定義上、デザイン パターンは一般的な問題に対する再利用可能なソリュー...
チャットができる「インテリジェント音声アシスタント」から、さまざまな家電を操作できるスマートスピーカ...
人工知能が流行するにつれ、人々はそれがどのように機能し、何ができるのかについて多くの疑問を抱いていま...
最近、国立国防科技大学の徐凱教授のチームは、高速移動に対するランダム最適化に基づくオンライン RGB...
2013年頃、Kuaishouは純粋なツールアプリケーションから、毎日1万人のアクティブユーザーを...
農業用ロボットは、一般的に、農産物を操作対象とし、ある程度の人間の知覚と行動能力を持ち、さまざまな高...
[[394975]]基数ソート基数ソートは「分散ソート」に属し、「バケット ソート」または「ビン ...
[51CTO.comよりオリジナル記事] 6月21日、WOT2019グローバル人工知能技術サミット...
専門家の混合 (MoE) は、LLM の効率性と精度を向上させるためによく使用される手法です。このア...