← Tous les exercices
Trois pas à la main : 0,69 puis 0,50 puis 0,48
Partie 3 · ★★
Une boucle de descente répète : mesurer la perte, calculer la pente, faire un pas. Écris-la pour 3 pas avec η = 3, en notant à chaque tour la perte avant le pas. Le notebook annonce les pertes 0,69, puis 0,50, puis 0,48.
Au bout de 3 pas, w doit valoir ≈ 1,337.
def sigmoide(u): return 1 / (1 + math.exp(-u)) t = [1.5, 1.0, -0.5, -1.5, -1.0, 0.5] # température - 38 °C y = [1, 1, 1, 0, 0, 0] # pneumonie : 1 = oui, 0 = non def perte(w, b): a = [sigmoide(w * ti + b) for ti in t] p = [ai if yi == 1 else 1 - ai for ai, yi in zip(a, y)] return -sum(math.log(pi) for pi in p) / len(p) def gradient(w, b, e=1e-4): pw = (perte(w + e, b) - perte(w - e, b)) / (2 * e) pb = (perte(w, b + e) - perte(w, b - e)) / (2 * e) return pw, pb w, b, eta = 0.0, 0.0, 3 pertes = [] for pas in range(3): pertes.append(perte(w, b)) pw, pb = ___(w, b) w = w - ___ * pw b = b - eta * pb
Ctrl/⌘+Entrée