300 万行から 100 行へ: 機械学習により開発エクスペリエンスが向上

300 万行から 100 行へ: 機械学習により開発エクスペリエンスが向上

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)から転載したものです。

このシナリオは悲惨です。失敗したソフトウェア ビルドの 2.5 GB のログ エントリ (300 万行) を参照して、100 万行目で発生したバグや回帰を見つけるのは、手動で行うにはあまりにも困難です。

幸いなことに、あなたを救う巧妙なトリックがあります。diff コマンドを実行して、これらの行を最新の成功したソフトウェア ビルドと比較し、バグによってログに予期しない行が生成されることを期待します。

[[338157]]

標準の 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 エンコーディングは、個々の単語とその数を含む辞書によく似ています。 「ログインエラー、チェックログ」という文を例に挙げます。

  1. {“ログ”: 2, “入力”: 1, “エラー”: 1, “チェック”: 1}

このエンコーディングはベクトルとして表すこともできます。この場合、インデックスは単語に対応し、値はカウントになります。 「log in error, checklog」を例にとり、これをベクトルでどのように表現できるかを示します。最初のエントリには「log」の単語数、2 番目のエントリには「in」の単語数などが含まれます。

  1. [2、1、1、1、0、0、0、0、0、…]

このベクトルは多数のゼロで構成されていることに注意してください。ゼロ値のエントリは、辞書にはあるが文には現れない他のすべての単語を表します。可能なベクトルエントリの総数、つまりベクトルの次元は、言語辞書の容量です。通常はエントリが数百万以上になることがあります。しかし、巧妙なテクニックを使えば数十万まで減らすことができます。

ここで、「問題認証」の辞書とベクトル表現を見ると、最初の 5 つのベクトルエントリに対応する単語は新しい文にはまったく表示されません。

  1. {“問題”:1, “認証”:1}
  2. [0、0、0、0、1、1、0、0、0、…]

2 つの文は意味的には類似しており、本質的には同じ意味を持ちますが、同じ単語がまったく含まれていないため、語彙的には異なります。あいまい区別設定では、これらの文は類似しすぎて強調表示されない可能性がありますが、K 最近傍アルゴリズムの md5 および k-hot ドキュメント エンコーディングではこの機能はサポートされていません。

次元削減では、線形代数または人工ニューラル ネットワークを使用して、意味的に類似した単語、文、およびログ行を、「埋め込み」で表される新しいベクトル空間内に近く配置します。この例では、「ログにエラーがあります。ログを確認してください」には 5 次元の埋め込みベクトルがある可能性があります。

  1. [0.1、0.3、-0.5、-0.7、0.2]

「認証の問題」は次のようなものである可能性があります:

  1. [0.1,0.35, -0.5, -0.7, 0.2]

k-hot bag-of-words の対応するものとは異なり、これらの埋め込みはコサイン類似度などの距離メトリックによって互いに近く、高密度の低次元表現はビルド ラインやシステム ログなどの短いドキュメントに役立ちます。

実際には、数千以上の辞書次元を、5 つの情報埋め込み次元ではなく 100 に置き換える必要があります。最先端の次元削減方法には、単語共起行列の特異値分解 (GloVe) や特殊なニューラル ネットワーク (word2vec、BERT、ELMo) などがあります。

クラスタリングとは何でしょうか? ログ記録アプリケーションの構築に戻りましょう。

Netflix は、時々ビデオをストリーミングするログ生成サービスだと冗談を言っています。例外監視、ログ処理、ストリーム処理などの領域では、1 秒あたり数十万件のリクエストが処理されます。テレメトリとログの領域に機械学習を適用する場合は、NLP ソリューションを拡張する必要があります。

[[338158]]

画像ソース: unsplash

そのため、私たちはテキスト重複排除のスケーリング、意味的類似性検索、テキスト外れ値検出などの問題に重点を置いています。これは、ビジネス上の問題をリアルタイムで解決する必要がある場合に唯一の解決方法です。

diff コマンド ソリューションでは、各行を低次元ベクトルに埋め込み (同時に埋め込みモデルを「微調整」または更新するオプション付き)、それをクラスターに割り当て、異なるクラスター内の行を「異なる」ものとして識別します。局所性に敏感なハッシュは、一定時間のクラスター割り当てとほぼ一定時間の最近傍検索を可能にする確率的アルゴリズムです。

LSH は、ベクトル表現をスカラー数、より正確にはスカラーのコレクションにマッピングすることによって機能します。標準的なハッシュ アルゴリズムの目的は、2 つの同一でない入力間の衝突を回避することですが、LSH の目的は、入力が離れている場合の衝突を回避し、入力が異なっていてもベクトル空間内で互いに近い場合に衝突を促進することです。

「ログエラー、チェックログ」の埋め込みベクトルは、2進数 01 (01 はクラスターを表します) にマッピングできます。 「認証の問題」の埋め込みベクトルは、同じ 2 進数 01 にマッピングされる可能性があります。 LSH はこのようにして、ファジー マッチング、逆問題、ファジー判別を実現します。LSH は、高次元の bag-of-words モデル ベクトル空間に早くから適用されていました。

LSH を使用すると、文字は同じメモリに逆方向に配置されます。

ビルド ログのテキスト外れ値検出に LSH とニューラル エンベッディングを適用すると、エンジニアはログ行の小さなサブセットを調べて、ビジネスに不可欠な可能性のあるソフトウェアのバグを特定して修正できるようになります。また、ほぼすべてのログ行のセマンティック クラスタリングをリアルタイムで取得することも可能になります。

現在、Netflix では Semantic LSH の利点をすべてのビルドに適用しています。セマンティック部分では、一見異なる項目を意味に基づいてグループ化し、外れ値レポートで注釈を付けることができます。

成熟したオープンソースの転移学習データ製品と SDK により、LSH を通じて非常に少ないコード行でセマンティック最近傍検索の問題を解決できます。私たちは、転移学習と微調整がアプリケーションにもたらすメリットに非常に驚いています。機械学習は、人々の作業をより効率的にするために、まだまだ多くのことができるはずです。

<<:  人工知能:テクノロジーは無邪気、善と悪は人間の心の中にある

>>:  機械学習プロジェクトでオプティマイザーを選択する方法

ブログ    

推薦する

ApolloとCarSim/TruckSimの共同シミュレーション

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

人工知能が物流業界に革命を起こす5つの方法

人工知能は物流業界の変革において重要な役割を果たしていることが証明されています。グローバル化が加速す...

ChatGPTでPPTを書く別の方法

以前、GPT + mindshow 自動 PPT の操作プロセスを紹介しました。主な手順は、まず G...

データ構造とアルゴリズムシリーズ - 深さ優先と幅優先

序文データ構造とアルゴリズムシリーズ(完了部分):時間計算量と空間計算量の分析配列の基本的な実装と特...

製造業におけるデジタルツインについて知っておくべきことすべて

インテリジェント製造の分野では、AI 駆動型デジタルツインが重要な技術となっています。デジタル ツイ...

アルゴリズム: Javascript をエレガントに使用して構造ツリーを再帰的に描画する方法

[[376839]]再帰と末尾再帰簡単に言えば、再帰とは関数が自分自身を呼び出すことです。プログラミ...

...

...

...

AIが悪事を働いている?人工知能における倫理について考えなければなりません!

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

アルゴリズムを理解するパート 2 - シーケンス テーブル

[[407946]]この記事はWeChatの公開アカウント「Front-end Gravitatio...

...

私たちが作ったAIは私たちを裏切るでしょうか?

数千年前、そろばんは暗算よりも速い計算ができる魔法の道具でした。 [[418541]]そろばんを使っ...

マイクロソフト、警察への顔認識サポート提供を禁止される企業リストに加わる

マイクロソフトはIBMとアマゾンに続き、米警察への顔認識ソフトウェアの販売を停止した最新のテクノロジ...

AIも催眠術をかけられるのか?

いつか、おそらく数十年以内に、人工ニューラル ネットワークを使用して、人間の脳をリアルにシミュレート...