Patrones de diseño de aprendizaje automático
by Valliappa Lakshmanan, Sara Robinson, Michael Munn
Capítulo 6. Patrones de diseño de reproducibilidad
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Las buenas prácticas del software, como las pruebas unitarias, suponen que si ejecutamos un fragmento de código, éste produce un resultado determinista:
defsigmoid(x):return1.0/(1+np.exp(-x))classTestSigmoid(unittest.TestCase):deftest_zero(self):self.assertAlmostEqual(sigmoid(0),0.5)deftest_neginf(self):self.assertAlmostEqual(sigmoid(float("-inf")),0)deftest_inf(self):self.assertAlmostEqual(sigmoid(float("inf")),1)
Este tipo de reproducibilidad es difícil en el aprendizaje automático. Durante el entrenamiento, los modelos de aprendizaje automático se inicializan con valores aleatorios y luego se ajustan en función de los datos de entrenamiento. Un simple algoritmo k-means implementado por scikit-learn requiere ajustar el random_state para garantizar que el algoritmo devuelve los mismos resultados cada vez:
defcluster_kmeans(X):fromsklearnimportclusterk_means=cluster.KMeans(n_clusters=10,random_state=10)labels=k_means.fit(X).labels_[::]returnlabels
Además de la semilla aleatoria, hay muchos otros artefactos que hay que arreglar para garantizar la reproducibilidad durante el entrenamiento. Además, el aprendizaje automático consta de diferentes etapas, como el entrenamiento, la implementación y el reentrenamiento. A menudo también es importante que algunas cosas sean reproducibles ...