機械学習におけるソフトウェアテスト

2253 ワード

サマリ


機械学習の実現にはソフトウェアコードが必要であり,この観点から機械学習もソフトウェアエンジニアリングの一部である.ソフトウェアに対してソフトウェアが正しいかどうかの検査を導入しますが、機械学習ではどのようにソフトウェアテストを行いますか?関連ソース

ソフトウェアテストとは


TDD-テスト駆動開発とは、機能コードを開発する前に、テストコードを作成し、テストを通過させる機能コードのみを作成し、テストによって開発プロセス全体の進行を駆動することである.これは、シンプルで可用性と高品質のコードの作成に役立ち、柔軟性と堅牢性が高く、変化に迅速に応答し、開発プロセスを加速させることができます.安照試験カバー面分白箱黒箱安照試験段階分ユニット集積と集積試験

なぜソフトウェアテストを行うのか

  • コード作成時の個人的な習慣、手違いや気の散り方などによる問題
    ===を==と書くと、forループ境界問題
  • プログラミング言語、呼び出しライブラリの特性を十分に理解できない例
  • import numpy as np
    arr = np.ones(12)
    print(arr)
    print(arr.transpose())
  • アルゴリズム自体については十分な理解がありません
    勾配の例

  • 機械学習におけるソフトウェアテストの特徴


    全体的に,ほとんどの機械学習モデルは本質的に低安定性と高ランダム性である.主な原因は、データ計算部(精度、オーバーフロー、計算自体の安定性)が一般的にテストセット全体に対して正確または誤りを保証することが困難であるため、一般的な機械学習のテストセットは、トレーニングセットに基づいて得られたモデルがテストセット上で良好に動作するか否かをテストするために用いられ、所望に合致する.

    機械学習ソフトウェアテストの方法


    ホワイトボックステスト

  • tensorflowテスト
  • ブラックボックステスト


    一般的な機械学習のテストセットは、トレーニングセットに基づいて得られたモデルがテストセット上で良好に動作しているかどうかをテストするために使用され、所望に合致する.

    機械学習におけるテストポイント


    コードロジック検証


    特に,自己実現の条件と分岐の多いコードである.例えばtensorflowコードテスト

    アルゴリズム検証


    具体的なアルゴリズムの具体的な分析.基本原則は、元のコードの実装経路ではなく、別の経路で検証することです.

    結論——機械学習符号化におけるバグ発生をどのように防止するか


    エンコーディングモジュールの最小化


    これはソフトウェアエンジニアリングにおけるコードに対する要求です.モジュールを分けて、各モジュールはできるだけ単一で、簡単です.安定性のコードをできるだけ全体的な非安定性コードから分離する

    コードを自分で書かないで、既存の成熟したライブラリと方法をできるだけ使用します。


    既存の成熟したライブラリと方法は特定の機能に対して深さ最適化を行い、ホイールの再構築よりもはるかに速く、安定している.これにより、符号化効率、アルゴリズムオーバーヘッドが向上します.

    ユニットテストを行う


    TensorFlowのtest_のような既存のマシン学習フレームワークが提供するテスト機能を使用します.util.TensorFlowTestCaseクラス

    具体的なアルゴリズムに対して相応のアルゴリズム検証を行う

  • 勾配検査コード実現
  • コードに導関数式を用いて逆伝搬を実現し,検証時に限界法則に基づいて導関数式の正しさを検証する
    参考資料-スタンフォード教程-勾配検査-UFLDL教程-勾配検査-勾配を計算する3つの方法:数値法、解析法、逆伝搬法-大規模Tensorflowネットワークのいくつかのテクニック-Testing guide.-テストドライバ開発