Fondamentalement, il s'agit d'un mémorandum de contenu de Deep Learning fait à partir de zéro d'O'Reilly J'ai une balise python, mais je ne vois pas beaucoup de code python.
En termes simples, circuit logique
Une porte qui fonctionne comme suit
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Atteindre la porte ci-dessus en changeant le poids (w_1, w_2) $ de $ b + w_1x_1 + w_2x_2 Idem pour les autres portes
La porte XOR ne peut pas être reproduite avec Perceptron 1 couche
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Je n'entrerai pas dans les détails, mais cela ne peut être réalisé avec un seul Perceptron. Ceci peut être réalisé en empilant des couches (perceptron multicouche) C'est la base du réseau neuronal
L'idée de base est avec Perceptron
Perceptron sortie 1 si la sortie de la fonction mentionnée plus haut dépasse 0, sinon elle sort 0. En d'autres termes, la sortie d'une couche est sortie vers la couche suivante à l'aide de la fonction step. La fonction d'étape est appelée ici la ** fonction d'activation **.
Cette fonction d'activation se remplace dans le réseau neuronal
h(x)=\frac{1}{1+exp(-x)}
Une fonction est une fonction qui renvoie une sortie lorsqu'une certaine entrée est donnée. La fonction sigmoïde n'est également qu'une fonction
Très simplement, la forme de la fonction est lisse
Je ne l'ai pas encore fait
Si l'entrée est $ X $, le poids de la première couche est $ W $, et le biais de la première couche est $ B $, La somme pondérée de la première couche peut être exprimée comme $ A = XW + B $ Donnez ce vecteur $ A $ comme entrée de la fonction sigmoïde et donnez sa sortie comme entrée suivante La sortie de la dernière couche utilise une autre fonction au lieu de la fonction sigmoïde
def sigmoid(x):
return 1/(1+np.exp(-x))
def init_network():
network = {}
network['W1'] = np.array([[0.1, 0.3, 0.5],[0.2, 0.4, 0.6]])
network['B1'] = np.array([0.1, 0.2, 0.3])
# ...Initialisez également les autres couches
return network
def forward(network, x):
W1 = network['W1']
B1 = network['B1']
a1 = np.dot(x, W1)
z1 = sigmoid(a1)
# ...Continuer
y = identity_function(a3)
return y
#Je pense que ce sera orienté objet à l'avenir
network = init_network()
x = np.array([1.0, 2.0])
y = forward(network, x)
Utiliser la fonction d'égalité ou la fonction softmax La fonction d'égalité est une fonction qui sort l'entrée telle quelle La fonction softmax est exprimée par la formule suivante
y_k = \frac{exp(a_k)}{\sum_{i=1}^{n}exp(a_i)}
Cependant, lors de l'implémentation de la fonction Softmax par programme, vous devez faire attention au débordement, donc Soustrayez la valeur maximale du vecteur de la valeur de a.
Il convertit la sortie du réseau neuronal en probabilité de le classer dans une certaine classe. Cependant, comme la relation d'amplitude de la sortie ne change pas, elle est généralement omise dans la phase d'inférence. La fonction Softmax est utilisée dans la phase d'apprentissage
Recommended Posts