apeescape2.com
  • メイン
  • プロセスとツール
  • 収益性と効率性
  • Uxデザイン
  • 製品の担当者とチーム
データサイエンスとデータベース

サウンドロジックと単調AIモデル

AIは急速に驚くべき資産になりつつあり、画像認識、Go、さらにはポーカーなどの分野で超人的なレベルのパフォーマンスを達成しています。多くの人がAIと人類の未来に興奮しています。同時に、AIには1つの厄介な欠陥があるという一般的な感覚があります。現在の状態のAIは、予測できないほど信頼性が低い可能性があります。

古典的な例は ジェパディ! IBMチャレンジ 、その間、IBM AIであるワトソンはボードを簡単に掃除しましたが、「最終的なジェパディ!」を見逃しただけでした。のカテゴリにあった質問 米国の都市 :「その最大の空港は第二次世界大戦の英雄にちなんで名付けられました。第二次世界大戦で2番目に大きい戦いです。」ワトソン 答えた 、「トロントとは?????」-追加の疑問符(および低賭け金) その疑いを示す 。

つまり、AIにはおとぎ話のようなパフォーマンスを長期間(数か月、数年、 数十年 でも、突然、不思議なことに失敗するという、このしつこい可能性が常にあります。



私たち人間にとって最も懸念されるのは、AIが間違いを犯すということではなく、間違いがどれほど「非論理的」であるかということです。ワトソンの場合、質問への答えを知らない人は、少なくとも米国の主要都市を「論理的に」推測しようとします。これが、自動運転車がまだ一般に採用されていない主な理由の1つだと思います。自動運転車の方が統計的に安全であるとしても、ワトソンと同様の意味で、基盤となるAIが予期せず失敗する可能性があるのではないかと懸念しています。 、しかしはるかに深刻な影響があります。

これは私に不思議に思いました、正しいAIモデルはこの問題を修正できますか?適切なAIには、すべての答えがない場合でも、重要な瞬間に適切な意思決定を行う機能がありますか?このようなAIは、テクノロジーの方向性を変え、AIのおとぎ話のようなメリットを実現できるでしょう…

これらの質問に対する答えはイエスだと思います。ワトソンのような間違いは、改良された、より論理的に制約されたモデルを使用することで回避できると思います。その初期のプロトタイプは 単調な機械学習モデル 。適切な単調AIモデルを使用して、まだ詳細に立ち入ることはありません。

  • 自動運転車の方が安全です。他の信号が大量に存在する場合でも、最小限の人間の信号を検出するだけで安全プロトコルをアクティブにすることができるからです。
  • 機械学習(ML)システムは、敵対的攻撃や予期しない状況に対してより堅牢になります。
  • MLのパフォーマンスは、より論理的で人間が理解できるものになります。

私たちは、AIの計算能力とアルゴリズム能力が大幅に成長した時代から、AIの精巧さ、有効性、理解の時代に移行していると信じています。単調な機械学習モデルは、このエキサイティングな旅の第一歩です。単調モデルはAIをより「論理的」にします。

編集者のメモ:MLの基本を理解するために独自の第一歩を踏み出そうとしている読者は、 MLの紹介記事 。

Webサーバーとしてラズベリーパイを使用する

単調AIモデルの理論

では、単調モデルとは何ですか?大まかに言えば、 単調モデル いくつかの機能セットを備えたMLモデルです( 単調な特徴 )その増加により、モデルは常に出力を増加させます。

技術的に...

...上記の定義が不正確な場所が2つあります。

まず、ここでの機能は単調です 増加 。また、単調に減少する特徴を持つこともできます。その増加は常にモデルの減少につながります。この2つは、否定(-1を掛ける)だけで相互に変換できます。

第二に、出力が増加すると言っても、それが 厳密に 増加している—つまり 減らない 、出力は同じままである可​​能性があるため。

実生活では、変数の多くのペアが単調な関係を示します。例えば:

  • 旅行のガソリン価格は、走行距離が単調に増加しています。
  • ローンを受け取る可能性は、より良いクレジットでより高くなります。
  • 予想運転時間は交通量とともに増加します。
  • 広告のクリック率に応じて収益が増加します。

これらの論理関係は十分に明確ですが、限られたデータを使用して補間し、ドメイン知識を持たないMLモデルの場合、そうではない可能性があります。実際、モデルはそれらを誤って補間し、ばかげて奇抜な予測をもたらす可能性があります。 機械学習 そのモデル 行う このような知識を取得すると、実際には(過剰適合を回避することで)パフォーマンスが向上し、デバッグが容易になり、解釈しやすくなります。ほとんどのユースケースでは、単調モデルは、学習者のアンサンブルの一部として、通常のモデルと組み合わせて使用​​する必要があります。

単調なAIモデルが本当に輝いている場所の1つは、敵対的な堅牢性です。単調モデルは「強化された」機械学習モデルであり、敵対的攻撃に耐性があることを意味します。非単調な機能のみを操作できる攻撃者は、単調なAIモデルに関して例のラベルを変更できないため、単調なAIモデルを回避することはできません。

単調AIモデルのユースケース

これまでのところ、この議論は完全に理論的なものです。実際のユースケースについて説明しましょう。

ユースケース#1:マルウェアの検出

単調なAIモデルの最もクールなユースケースの1つは、マルウェア検出での使用である必要があります。 Windows Defenderの一部として実装された単調なモデルは、すべての最新のWindowsデバイスに存在し、マルウェアからユーザーを静かに保護します。

あるシナリオでは、マルウェアの作成者が合法的な登録企業になりすまして認証局をだまし、信頼できる証明書を使用してマルウェアをデジタルコード署名することに成功しました。ナイーブなマルウェア分類子は、機能としてコード署名を使用する可能性が高く、そのようなサンプルが無害であることを示します。

ただし、Windows Defenderの単調なAIモデルの場合はそうではなく、その単調な機能はマルウェアを示す機能のみです。マルウェアの作成者がマルウェアにどれだけ「良性」のコンテンツを注入しても、Windows Defenderの単調なAIモデルは引き続きサンプルをキャッチし、ユーザーを被害から守ります。

私のコースでは、 レッドチームハッカーのための機械学習 、MLベースのマルウェア分類子を回避するためのいくつかの手法を教えています。手法の1つは、悪意のあるサンプルに「良性の」コンテンツ/機能を詰め込んで、ナイーブなMLモデルを回避することです。単調なモデルはこの攻撃に耐性があり、悪意のあるアクターが分類子を回避する可能性がある場合は、より多くの作業を強いられます。

ユースケース#2:コンテンツフィルタリング

チームが学校図書館用のWebサーフィンコンテンツフィルターを構築しているとします。単調なAIモデルは、不適切なコンテンツを含むフォーラムにも受け入れ可能なコンテンツがたくさん含まれている可能性があるため、ここで使用するのに最適な候補です。

単純分類器は、「適切な」機能の存在と「不適切な」機能の存在を比較検討する場合があります。しかし、コンテンツのごく一部しか占めていなくても、子供が不適切なコンテンツにアクセスすることを望まないため、それはうまくいきません。

ユースケース#3:自動運転車のAI

自動運転車のアルゴリズムを構築することを想像してみてください。画像を見て、緑色のライトが見えます。歩行者も見えます。それはお互いの信号を比較検討する必要がありますか?絶対違う。歩行者の存在は、車を止める決定をするのに十分です。歩行者の存在は単調な特徴と見なす必要があり、このシナリオでは単調なAIモデルを使用する必要があります。

ユースケース#4:レコメンデーションエンジン

レコメンデーションエンジンは、単調なAIモデルの優れたユースケースです。一般に、星の評価、価格、レビューの数など、各製品について多くの入力がある可能性があります。星の評価や価格など、他のすべての入力が等しい場合は、レビューの数が多い製品をお勧めします。単調なAIモデルを使用して、このようなロジックを適用できます。

ユースケース#5:スパムとフィッシングのフィルタリング

このユースケースは、マルウェア検出のユースケースに似ています。悪意のあるユーザーは、スパムフィルターをだますために、スパムまたはフィッシングメールに良性のように見える用語を挿入する可能性があります。単調なAIモデルはそれを免れます。

実装とデモンストレーション

単調なAIモデルの無料で利用可能な実装に関しては、XGBoost、LightGBM、TensorFlowLatticeの3つが最もよくサポートされています。

単調MLXGBoostチュートリアル

XGBoostは最高のパフォーマンスの1つと見なされています アルゴリズム 長年の実証研究と競争に基づいた構造化データ。さらに、XGBoostでは単調性が実装されています。

単調MLモデルの使用方法に関する次のデモXGBoostチュートリアルには、 付随するPythonリポジトリ 。

いくつかのライブラリをインポートすることから始めます。

import random import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.metrics import confusion_matrix import seaborn as sns sns.set(font_scale=1.4)

モデル化するシナリオは、コンテンツフィルタリングまたはマルウェアデータベースです。たとえば、「科学」、「歴史」、「スポーツ」に関連するコンテンツの量、またはマルウェアの場合は「コード署名」と「認識された作成者」をモデル化したbenign_featuresがいくつかあります。 」

c法人またはs法人とは

また、malicious_featuresがあります。これは、たとえば、「暴力」や「麻薬」に関連するコンテンツの量、またはマルウェアの場合は「暗号ライブラリへの呼び出しが行われた回数」や「既知のマルウェアファミリーとの類似性の数値的尺度。」

生成モデルを介して状況をモデル化します。次の関数を使用して、約半分が良性で半分が悪意のある多数のデータポイントをランダムに生成します。

def flip(): '''Simulates a coin flip.''' return 1 if random.random() <0.5 else 0

各データポイントは、その特徴をランダムに生成します。 「良性」のデータポイントは良性の機能に対してより高いバイアスを持ち、「悪意のある」データポイントは悪意のある機能に対してより高いバイアスを持ちます。

次のように三角分布を使用します。

bins = [0.1 * i for i in range(12)] plt.hist([random.triangular(0, 1, 1) for i in range(50000)], bins)

階段に似たデータポイント分布グラフ。 0.1から0.2、0.2から0.3などのほとんどのバケットには、左側のバケットよりも約1,000多いデータポイントがあります。最初の0から0.1は、約500であるように見えます。

この関数を使用して、上記のロジックをキャプチャします。

def generate(): '''Samples from the triangular distribution.''' return random.triangular(0, 1, 1)

次に、データセットの作成に進みます。

m = 100000 benign_features = 5 malicious_features = 5 n = benign_features + malicious_features benign = 0 malicious = 1 X = np.zeros((m, n)) y = np.zeros((m)) for i in range(m): vec = np.zeros((n)) y[i] = flip() if y[i] == benign: for j in range(benign_features): vec[j] = generate() for j in range(malicious_features): vec[j + benign_features] = 1 - generate() else: for j in range(benign_features): vec[j] = 1 - generate() for j in range(malicious_features): vec[j + benign_features] = generate() X[i, :] = vec

Xランダムに生成された特徴のベクトルが含まれ、yラベルが含まれています。この分類の問題は簡単ではありません。

典型的なサンプル:良性と悪意のあるもの。各グラフは、0から1までのスケールの値を持つ10の特徴(0から9)を示しています。良性のグラフでは、ほとんどの特徴は0.5未満です。機能6と7は0.6を超えています。機能2はほぼ0.8です。機能3はほぼ1.0です。悪意のあるグラフでは、機能5、6、7、および8を含め、10個の機能のうち7個が0.5を超えています。

良性のサンプルは一般に最初のいくつかの機能でより大きな重みを持っているのに対し、悪意のあるサンプルは一般に最後のいくつかの機能でより大きな重みを持っていることがわかります。

データの準備ができたら、簡単なトレーニングとテストの分割を実行しましょう。

from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

関数を使用して、XGBoostチュートリアルで使用するデータを準備します。

import xgboost as xgb def prepare_for_XGBoost(X, y): '''Converts a numpy X and y dataset into a DMatrix for XGBoost.''' return xgb.DMatrix(X, label=y) dtrain = prepare_for_XGBoost(X_train, y_train) dtest = prepare_for_XGBoost(X_test, y_test) dall = prepare_for_XGBoost(X, y)

それでは、データに対して単純な(非単調)XGBoostモデルをトレーニングしてテストしましょう。次に、混同行列を印刷して、正しくラベル付けされた正の例、正しくラベル付けされた負の例、誤ってラベル付けされた正の例、および誤ってラベル付けされた負の例の数値の内訳を確認します。

params = {'n_jobs': -1, 'tree_method': 'hist'} model_no_constraints = xgb.train(params=params, dtrain=dtrain) CM = predict_with_XGBoost_and_return_confusion_matrix( model_no_constraints, dtrain, y_train ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Unconstrained model's training confusion matrix') plt.show() print() CM = predict_with_XGBoost_and_return_confusion_matrix( model_no_constraints, dtest, y_test ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Unconstrained model's testing confusion matrix') plt.show() model_no_constraints = xgb.train(params=params, dtrain=dall)

制約のないモデル

結果を見ると、重大な過剰適合はないことがわかります。これらの結果を単調モデルの結果と比較します。

そのために、単調なXGBoostモデルをトレーニングしてテストしましょう。単調な制約を渡す構文はシーケンスです( f0 、 f1 、...、 fN )、ここでそれぞれ f私 機能が必要かどうかに応じて、-1、0、または1のいずれかです 私 それぞれ、単調に減少する、制約なし、または単調に増加する。当面のケースでは、悪意のある機能を単調に増加するように指定します。

params_constrained = params.copy() monotone_constraints = ( '(' + ','.join([str(0) for m in range(benign_features)]) + ',' + ','.join([str(1) for m in range(malicious_features)]) + ')' ) print('Monotone constraints enforced are:') print(monotone_constraints) params_constrained['monotone_constraints'] = monotone_constraints model_monotonic = xgb.train(params=params_constrained, dtrain=dtrain) CM = predict_with_XGBoost_and_return_confusion_matrix(model_monotonic, dtrain, y_train) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Monotonic model's training confusion matrix') plt.show() print() CM = predict_with_XGBoost_and_return_confusion_matrix(model_monotonic, dtest, y_test) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Monotonic model's testing confusion matrix') plt.show() model_monotonic = xgb.train(params=params_constrained, dtrain=dall)

単調なAIモデル

単調モデルのパフォーマンスが制約なしモデルのパフォーマンスと同じであることは明らかです。

次に、敵対的なデータセットを作成します。悪意のあるサンプルをすべて取得し、それらをすべて1に設定して、それらの良性の機能を「詰め込み」ます。次に、2つのモデルがどのように動作するかを確認します。

X_adversarial = X[y == malicious] y_adversarial = len(X_adversarial) * [malicious] for i in range(len(X_adversarial)): vec = X_adversarial[i, :] for j in range(benign_features): vec[j] = 1 X_adversarial[i, :] = vec

これらをXGBoostが取り込むフォームに変換してみましょう。

dadv = prepare_for_XGBoost(X_adversarial, y_adversarial)

XGBoostチュートリアルの最後のステップとして、2つの機械学習モデルタイプをテストします。

CM = predict_with_XGBoost_and_return_confusion_matrix( model_no_constraints, dadv, y_adversarial ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Unconstrained model's confusion matrix on adversarial dataset') plt.show() CM = predict_with_XGBoost_and_return_confusion_matrix( model_monotonic, dadv, y_adversarial ) plt.figure(figsize=(12, 10)) sns.heatmap(CM / np.sum(CM), annot=True, fmt='.2%', cmap='Blues') plt.ylabel('True Label') plt.xlabel('Predicted Label') plt.title('Monotonic model's confusion matrix on adversarial dataset') plt.show()

制約のないAIモデルと単調なAIモデル

ご覧のとおり、単調なAIモデルは約2,500倍堅牢でした 敵対的攻撃 。

LightGBM

LightGBMで単調な機能を使用するための構文 似ています 。

TensorFlowラティス

TensorFlow Latticeは、単調性の制約に取り組むためのもう1つのフレームワークであり、独自のラティスモデルを構築するための事前構築されたTensorFlowEstimatorとTensorFlow演算子のセットです。格子は多次元の補間ルックアップテーブルです。つまり、格子は、これらの点の関数値とともに、空間に均等に分散された点(グリッドなど)です。による GoogleAIブログ :

「…ルックアップテーブルの値は、トレーニング例での損失を最小限に抑えるようにトレーニングされますが、さらに、ルックアップテーブルの隣接する値は、入力スペースの特定の方向に沿って増加するように制約されます。これにより、モデルの出力が増加します。それらの方向。重要なのは、ルックアップテーブルの値の間を補間するため、格子モデルは滑らかで、予測が制限され、テスト時間内の誤った大小の予測を回避するのに役立ちます。」

TensorFlowLatticeの使用方法のチュートリアルがあります ここに 。

単調なAIモデルと未来

悪意のある攻撃からデバイスを防御することから、論理的で役立つレストランの推奨事項を提供することまで、単調なAIモデルは、社会に大きな恩恵をもたらし、習得するための素晴らしいツールであることが証明されています。単調なモデルは、AIの安全性、フィネス、理解の新時代へと私たちを導くためにここにあります。つまり、これが単調なAIモデルであり、これが進歩です。

基本を理解する

単調シリーズとは何ですか?

単調系列は、単調に増加または単調に減少する系列です。項が常に増加している場合、シリーズは単調に増加しています。項が常に減少している場合、級数は単調に減少しています。

関数が単調であるとはどういう意味ですか?

関数が単調増加または単調減少のいずれかである場合、関数は単調です。 y> xがf(y)> f(x)を意味する場合、関数f(x)は単調増加です。 y> xがf(y)を意味する場合、単調減少です。

MLモデルとは何ですか?

機械学習(ML)モデルは、入力データセット(「トレーニングデータ」)から学習する数学的アルゴリズムであり、その方法を明示的にプログラムしなくても、新しいデータの予測を行うことができます。

c ++ヘッダーファイル

人工知能の単調性とは何ですか?

人工知能(AI)の単調性は、単調な分類または単調な推論を指す場合があります。単調分類は、単調関数の概念に密接に関連するAIモデルの数学的特性です。単調な推論は、AIシステムのロジックの根底にある推論の一形態です。

XGBoostモデルとは何ですか?

XGBoostは、「勾配ブースティング」として知られる機械学習アルゴリズムの広く使用されている実装です。多くの機械学習コンテストで優れたパフォーマンスを発揮し、数々の賞を受賞したことで有名になりました。 XGBoostは、Python、R、C ++、Java、Julia、Perl、およびScalaで使用できます。

XGBoostは何に適していますか?

XGBoostは通常、中規模(100k-1m)の表形式のデータセットで正確で信頼性があります。

ギリシャの債務危機の説明

財務プロセス

ギリシャの債務危機の説明
リモートチームのセキュリティのベストプラクティスのガイド

リモートチームのセキュリティのベストプラクティスのガイド

プロジェクト管理

人気の投稿
効率的なアプローチ-無駄のないUXMVPを設計する方法
効率的なアプローチ-無駄のないUXMVPを設計する方法
マッチングチームシニアフロントエンドエンジニア
マッチングチームシニアフロントエンドエンジニア
iOSユーザーインターフェイス:ストーリーボードとNIBとカスタムコード
iOSユーザーインターフェイス:ストーリーボードとNIBとカスタムコード
S.M.A.R.T.次のUXプロジェクトのビジネス目標を定義するには
S.M.A.R.T.次のUXプロジェクトのビジネス目標を定義するには
より良いUXのために主題分析を活用する方法
より良いUXのために主題分析を活用する方法
 
欠測データを使用してモデル化する場合の財務予測
欠測データを使用してモデル化する場合の財務予測
IOS開発者ガイド:Objective-CからSwiftへ
IOS開発者ガイド:Objective-CからSwiftへ
バイヤーと開発者は店内近接マーケティングに適応できますか?
バイヤーと開発者は店内近接マーケティングに適応できますか?
暗号通貨への投資:究極のガイド
暗号通貨への投資:究極のガイド
ApeeScapeはクライアントと提携して、超成長のための才能と技術戦略を研究しています
ApeeScapeはクライアントと提携して、超成長のための才能と技術戦略を研究しています
人気の投稿
  • アジャイルのtddとbdd
  • ソフトウェア開発におけるbddとは
  • コーディング言語の作り方
  • C ++を学ぶための最良の方法
  • サーバー側のWebアプリケーションを保護することが難しい理由ではないのはどれですか?
  • コールオプション価格の計算方法
カテゴリー
リモートの台頭 Uxデザイン 人とチーム その他 アジャイル ツールとチュートリアル 革新 Webフロントエンド 投資家と資金調達 ライフスタイル

© 2021 | 全著作権所有

apeescape2.com