traduccion que neural networks network machine learning examples curso and algorithms algorithm machine-learning neural-network

algorithm - que - machine learning traduccion



Perceptron único: función de evaluación no lineal (3)

En el caso de un único perceptrón, la literatura indica que no se puede usar para separar casos discriminantes no lineales como la función XOR. Esto es comprensible ya que la dimensión VC de una línea (en 2-D) es 3 y, por lo tanto, una sola línea 2-D no puede discriminar salidas como XOR.

Sin embargo, mi pregunta es por qué la función de evaluación en el perceptrón simple debe ser una función de paso lineal. Claramente, si tenemos una función de evaluación no lineal como un sigmoide, este perceptrón puede discriminar entre el 1s y el 0s de XOR. Entonces, ¿me estoy perdiendo algo aquí?


si tenemos una función de evaluación no lineal como un sigmoide, este perceptrón puede discriminar entre el 1 y el 0 de XOR

Eso no es cierto en absoluto. El criterio para la discriminación no es la forma de la línea (o hiperplano en dimensiones más altas), sino más bien si la función permite la separabilidad lineal .

No hay una sola función que produzca un hiperplano capaz de separar los puntos de la función XOR. La curva en la imagen separa los puntos, pero no es una función.

Para separar los puntos de XOR, deberá usar al menos dos líneas (o cualquier otra función con forma). Esto requerirá dos perceptrones por separado. Entonces, podrías usar un tercer perceptrón para separar los resultados intermedios en base al signo.


Supongo que sigmoid no significa en realidad un sigmoide, sino algo con un máximo local. Mientras que el clasificador binario del perceptron normal tiene la forma:

f(x) = (1 if w.x+b>0 else 0)

usted podría tener una función:

f(x) = (1 if |w.x+b|<0.5 else 0)

Sin duda, esto funcionaría, pero sería bastante artificial, ya que efectivamente está adaptando su modelo a su conjunto de datos, lo cual es malo.

Si el algoritmo perceptron normal convergería es casi seguro fuera de la cuestión, aunque puedo estar equivocado. http://en.wikipedia.org/wiki/Perceptron#Separability_and_convergence Es posible que tengas que encontrar una forma completamente nueva de ajustar la función, lo que de alguna manera frustra el propósito.

O simplemente podría usar una máquina de vectores de soporte , que es como perceptrón, pero es capaz de manejar casos más complicados utilizando el truco del kernel .


Una vieja pregunta, pero quiero dejar mis pensamientos (que alguien me corrija si estoy equivocado).

Creo que está mezclado los conceptos de linear model y función de loss o error . El Perceptron es, por definición, un modelo lineal, por lo que define una línea / plano / hiperplano que puede usar para separar sus clases.

El algoritmo de Perceptron estándar extrae la señal de su salida, dando -1 o 1:

yhat = signal(w * X + w0)

Esto está bien y eventualmente convergerá si sus datos son linearly separable .

Para mejorar esto, puede usar un sigmoid para suavizar la función de pérdida en el rango [-1, 1]:

yhat = -1 + 2*sigmoid(w * X + w0) mean_squared_error = (Y - yhat)^2

Luego use un optimizador numérico como Gradient Descent para minimizar el error sobre todo su conjunto de datos. Aquí w0, w1, w2, ..., wn son sus variables.

Ahora, si sus datos originales no son linearly separable , puede transformarlos de una manera que los haga linealmente separables y luego aplicar cualquier modelo lineal. Esto es cierto porque el modelo es linear on the weights .

Esto es básicamente lo que los modelos como SVM hacen bajo los capós para clasificar sus datos no lineales.

PS: I''m learning this stuff too, so experts don''t be mad at me if i said some crap.