機械学習におけるソフトウェアテスト
2253 ワード
サマリ
機械学習の実現にはソフトウェアコードが必要であり,この観点から機械学習もソフトウェアエンジニアリングの一部である.ソフトウェアに対してソフトウェアが正しいかどうかの検査を導入しますが、機械学習ではどのようにソフトウェアテストを行いますか?関連ソース
ソフトウェアテストとは
TDD-テスト駆動開発とは、機能コードを開発する前に、テストコードを作成し、テストを通過させる機能コードのみを作成し、テストによって開発プロセス全体の進行を駆動することである.これは、シンプルで可用性と高品質のコードの作成に役立ち、柔軟性と堅牢性が高く、変化に迅速に応答し、開発プロセスを加速させることができます.安照試験カバー面分白箱黒箱安照試験段階分ユニット集積と集積試験
なぜソフトウェアテストを行うのか
===を==と書くと、forループ境界問題
import numpy as np
arr = np.ones(12)
print(arr)
print(arr.transpose())
勾配の例
機械学習におけるソフトウェアテストの特徴
全体的に,ほとんどの機械学習モデルは本質的に低安定性と高ランダム性である.主な原因は、データ計算部(精度、オーバーフロー、計算自体の安定性)が一般的にテストセット全体に対して正確または誤りを保証することが困難であるため、一般的な機械学習のテストセットは、トレーニングセットに基づいて得られたモデルがテストセット上で良好に動作するか否かをテストするために用いられ、所望に合致する.
機械学習ソフトウェアテストの方法
ホワイトボックステスト
ブラックボックステスト
一般的な機械学習のテストセットは、トレーニングセットに基づいて得られたモデルがテストセット上で良好に動作しているかどうかをテストするために使用され、所望に合致する.
機械学習におけるテストポイント
コードロジック検証
特に,自己実現の条件と分岐の多いコードである.例えばtensorflowコードテスト
アルゴリズム検証
具体的なアルゴリズムの具体的な分析.基本原則は、元のコードの実装経路ではなく、別の経路で検証することです.
結論——機械学習符号化におけるバグ発生をどのように防止するか
エンコーディングモジュールの最小化
これはソフトウェアエンジニアリングにおけるコードに対する要求です.モジュールを分けて、各モジュールはできるだけ単一で、簡単です.安定性のコードをできるだけ全体的な非安定性コードから分離する
コードを自分で書かないで、既存の成熟したライブラリと方法をできるだけ使用します。
既存の成熟したライブラリと方法は特定の機能に対して深さ最適化を行い、ホイールの再構築よりもはるかに速く、安定している.これにより、符号化効率、アルゴリズムオーバーヘッドが向上します.
ユニットテストを行う
TensorFlowのtest_のような既存のマシン学習フレームワークが提供するテスト機能を使用します.util.TensorFlowTestCaseクラス
具体的なアルゴリズムに対して相応のアルゴリズム検証を行う
参考資料-スタンフォード教程-勾配検査-UFLDL教程-勾配検査-勾配を計算する3つの方法:数値法、解析法、逆伝搬法-大規模Tensorflowネットワークのいくつかのテクニック-Testing guide.-テストドライバ開発