October 2021
Beginner to intermediate
414 pages
6h 25m
Japanese
単体テストのようなベストプラクティスでは、プログラムを走らせたらいつも同じ結果が決定的に返されることを前提としています。
def sigmoid(x):
return 1.0 / (1 + np.exp(-x))
class TestSigmoid(unittest.TestCase):
def test_zero(self):
self.assertAlmostEqual(sigmoid(0), 0.5)
def test_neginf(self):
self.assertAlmostEqual(sigmoid(float("-inf")), 0)
def test_inf(self):
self.assertAlmostEqual(sigmoid(float("inf")), 1)
このような実行の再現性は、機械学習を使う上では確保困難となります。訓練中、機械学習のモデルのパラメータは乱数で初期化され、訓練データによって調整されるためです。そこで例えばscikit-learnで実装された単純なk平均法のアルゴリズムでは、毎回同じ結果を返すために以下にあるようにrandom_stateの値を設定します。
def cluster_kmeans(X):
from sklearn import cluster
k_means = cluster.KMeans(n_clusters=10, random_state=10)
labels = k_means.fit(X).labels_[::]
return labels
訓練における再現性を保つためには、乱数のシードだけではなく、いろいろな管理要素の値を固定する必要があります。さらに機械学習には、訓練やデプロイ、再訓練など、さまざまな工程があります。そのため、しばしばそれらの工程をまたがって再現性を保つことが重要になります。 ...
Read now
Unlock full access