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:

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)

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:

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

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 ...

Get Patrones de diseño de aprendizaje automático now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.