Pregunta

Estoy tratando de entender un caso de red neuronal simple usando theo. El sitio Deeplearning.net ofrece el siguiente código simple para implementar una aplicación de regresión logística en un caso simple:

import numpy
import theano
import theano.tensor as T
rng = numpy.random

N = 400
feats = 784
D = (rng.randn(N, feats), rng.randint(size=N, low=0, high=2))
training_steps = 10000

# Declare Theano symbolic variables
x = T.matrix("x")
y = T.vector("y")
w = theano.shared(rng.randn(feats), name="w")
b = theano.shared(0., name="b")
print("Initial model:")
print(w.get_value())
print(b.get_value())

# Construct Theano expression graph
p_1 = 1 / (1 + T.exp(-T.dot(x, w) - b))   # Probability that target = 1
prediction = p_1 > 0.5                    # The prediction thresholded
xent = -y * T.log(p_1) - (1-y) * T.log(1-p_1) # Cross-entropy loss function
cost = xent.mean() + 0.01 * (w ** 2).sum()# The cost to minimize
gw, gb = T.grad(cost, [w, b])             # Compute the gradient of the cost
                                          # (we shall return to this in a
                                          # following section of this tutorial)

# Compile
train = theano.function(
          inputs=[x,y],
          outputs=[prediction, xent],
          updates=((w, w - 0.1 * gw), (b, b - 0.1 * gb)))
predict = theano.function(inputs=[x], outputs=prediction)

# Train
for i in range(training_steps):
    pred, err = train(D[0], D[1])

print("Final model:")
print(w.get_value())
print(b.get_value())
print("target values for D:")
print(D[1])
print("prediction on D:")
print(predict(D[0]))

Entiendo la mayor parte, P_1 es la función de regresión logística, la predicción es si el valor estará en la clase 0 o 1 clase, Xent es la función de pérdida, es decir, cuán lejos de la correcta está nuestra predicción. No entiendo la siguiente línea, el costo. ¿No debería el costo igual al Xent, es decir, la pérdida? ¿Cuál es la función de costo que representa aquí? Además, ¿por qué el sesgo se establece inicialmente en 0 y no un número aleatorio como los pesos?

¿Fue útil?

Solución

No entiendo la siguiente línea, el costo. ¿No debería el costo igual al Xent, es decir, la pérdida? ¿Cuál es la función de costo que representa aquí?

El costo es el error (xent.mean ()) + cierta regularización (0.01 * (w ** 2) .sum ())

¿Por qué el sesgo se establece inicialmente en 0 y no un número aleatorio como los pesos?

Es posible y común inicializar los sesgos para ser cero, ya que la ruptura de asimetría es proporcionada por los pequeños números aleatorios en los pesos.

Más detalles aquí.

Licenciado bajo: CC-BY-SA con atribución
scroll top