Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4

introduction

J'ai soudainement commencé à étudier "Deep Learning from scratch ❷ --- traitement du langage naturel" Notez que j'ai trébuché au chapitre 4 est.

L'environnement d'exécution est macOS Catalina + Anaconda 2019.10, et la version Python est 3.7.4. Pour plus de détails, reportez-vous au Chapitre 1 de ce mémo.

Chapitre 4 Accélération de word2vec

Ce chapitre est une accélération du modèle Word2vec CBOW créé au chapitre 3.

4.1 Amélioration de word2vec ①

Le premier est l'accélération de la couche d'entrée à la couche intermédiaire. Cette partie joue le rôle d'incorporer pour convertir les mots en expressions distribuées, mais comme la couche MatMul est inutile, remplacez-la par la couche Embedding.

La couche d'intégration est simple, mais la partie qui ajoute $ dW $ lorsque idx est dupliqué dans l'implémentation de rétropropagation peut être un peu déroutante. Dans le livre, il est repris dans la figure 4-5, et l'explication est omise comme "Réfléchissons à la raison pour laquelle l'ajout est fait par vous-même".

Alors, j'y ai pensé en le comparant au calcul de rétropropagation pour la couche MatMul. En effet, le calque Embedding doit avoir le même résultat que le calque MatMul.

Tout d'abord, remplacez $ idx $ dans la figure 4-5 par $ x $ dans la couche MatMul.

\begin{align}
idx &= 
\begin{pmatrix}
0\\
2\\
0\\
4\\
\end{pmatrix}\\
\\
x &=
\begin{pmatrix}
1 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 1 & 0 & 0 & 0 & 0\\
1 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 1 & 0 & 0\\
\end{pmatrix}
\end{align}

La formule de rétropropagation pour la couche MatMul est $ \ frac {\ partial L} {\ partial W} = x ^ T \ frac {\ partial L} {\ partial y} $ (voir page 33), donc Figure 4-5 Si vous le remplacez par la notation de, il devient $ dw = x ^ Tdh $. En appliquant ici $ x $ et $ dh $ dans la figure 4-5 pour calculer $ dW $, nous obtenons: En fait, je voulais faire $ dh $ comme le montre la Fig. 4-5, mais je ne peux pas exprimer la nuance de ● comme un livre, donc ici je l'exprime avec $ ●, ◆, a, b $.

\begin{align}
dW &= x^Tdh\\
\\
\begin{pmatrix}
? & ? & ? \\
○ & ○ & ○ \\
●_1 & ●_2 & ●_3 \\
○ & ○ & ○ \\
◆_1 & ◆_2 & ◆_3 \\
○ & ○ & ○ \\
○ & ○ & ○ \\
\end{pmatrix}
&=
\begin{pmatrix}
1 & 0 & 1 & 0\\
0 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
a_1 & a_2 & a_3 \\
●_1 & ●_2 & ●_3 \\
b_1 & b_2 & b_3 \\
◆_1 & ◆_2 & ◆_3 \\
\end{pmatrix}\\
\end{align}

Comme vous pouvez le voir à partir du calcul, la deuxième ligne ($ ● _1 ● _2 ● _3 ) et la quatrième ligne ( ◆ _1 ◆ _2 ◆ _3 $) de $ dh $ sont telles qu'elles sont $ dW $ comme illustré dans la figure 4-5. Ce seront les 3e et 5e lignes de. Et le $? $ Sur la première ligne du $ dW $ en question ressemble à ceci:

\begin{align}
\begin{pmatrix}
a_1 + b_1 & a_2 + b_2 & a_3 + b_3 \\
○ & ○ & ○ \\
●_1 & ●_2 & ●_3 \\
○ & ○ & ○ \\
◆_1 & ◆_2 & ◆_3 \\
○ & ○ & ○ \\
○ & ○ & ○ \\
\end{pmatrix}
&=
\begin{pmatrix}
1 & 0 & 1 & 0\\
0 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
\end{pmatrix}
\begin{pmatrix}
a_1 & a_2 & a_3 \\
●_1 & ●_2 & ●_3 \\
b_1 & b_2 & b_3 \\
◆_1 & ◆_2 & ◆_3 \\
\end{pmatrix}
\end{align}

En d'autres termes, vous pouvez voir que nous ajoutons les première et troisième lignes de $ dh $. La même chose que le calcul de cette couche MatMul doit être implémentée dans la couche Embedding, il est donc nécessaire de l'ajouter.

4.2 Amélioration de word2vec②

Vient ensuite l'amélioration de la couche intermédiaire à la couche de sortie. L'idée de l'échantillonnage négatif pour réduire considérablement l'apprentissage avec des exemples négatifs est intéressante.

Il n'y avait pas de grosse pierre d'achoppement, mais dans le livre, l'explication de la rétropropagation de la couche Embedding Dot est omise car ce n'est "pas un problème difficile, alors réfléchissons-y par vous-même", donc je vais résumer ici un peu. regarder.

Dans la figure 4-12, si vous ne découpez que la partie du calque Embedding Dot, ce sera comme suit.

図1.png

Ce que fait le nœud de point, c'est multiplier chaque élément et ajouter les résultats. Par conséquent, considérons la rétro-propagation en se décomposant en un nœud de multiplication (voir "1.3.4.1 nœud de multiplication" au chapitre 1) et un nœud de somme (voir "1.3.4.4 nœud de somme" au chapitre 1). Ensuite, il aura la forme suivante. Les lettres bleues sont de retour de la propagation.

図2.png

En revenant au diagramme de nœud de point précédent, cela ressemble à ceci:

図3.png

C'est OK s'il est implémenté comme indiqué sur cette figure, mais comme la forme de «dout» ne correspond pas à «h» et «target_W» telle quelle, le produit de chaque élément ne peut pas être calculé par «*» de NumPy. Par conséquent, faites d'abord correspondre les formes avec dout.reshape (dout.shape [0], 1) puis calculez le produit. Si vous l'implémentez de cette manière, vous pouvez voir qu'il devient le code de ʻEmbeddingDot.backwad () `dans le livre.

4.3 Apprentissage amélioré de word2vec

La mise en œuvre de l'apprentissage n'est pas particulièrement trébuchante. J'utilise le corpus PTB dans le livre, mais j'aime le japonais après tout, alors j'ai essayé d'apprendre avec le texte pré-écrit d'Aozora Bunko comme au chapitre 2. C'était.

Pour obtenir le corpus, utilisez la version modifiée de dataset / aozorabunko.py au lieu de dataset / ptb.py. Pour plus d'informations sur cette source et ce mécanisme, reportez-vous au [Chapitre 2, «Amélioration de la méthode basée sur le décompte»](https://qiita.com/segavvy/items/52feabbf7867020e117d#24- Amélioration de la méthode basée sur le décompte). Je l'ai écrit, alors veuillez vous y référer.

ch04 / train.py a également été modifié pour utiliser le corpus d'Aozora Bunko comme suit. Les changements sont ceux avec «★» dans les commentaires.

ch04/train.py


# coding: utf-8
import sys
sys.path.append('..')
from common import config
#Lors de l'exécution sur GPU, supprimez le commentaire ci-dessous (cupy requis)
# ===============================================
# config.GPU = True
# ===============================================
from common.np import *
import pickle
from common.trainer import Trainer
from common.optimizer import Adam
from cbow import CBOW
from skip_gram import SkipGram
from common.util import create_contexts_target, to_cpu, to_gpu
from dataset import aozorabunko  #★ Changé pour utiliser le corpus d'Aozora Bunko

#Paramètres des hyper paramètres
window_size = 5
hidden_size = 100
batch_size = 100
max_epoch = 10

#Lire les données
corpus, word_to_id, id_to_word = aozorabunko.load_data('train')  #★ Changer de corpus
vocab_size = len(word_to_id)

contexts, target = create_contexts_target(corpus, window_size)
if config.GPU:
    contexts, target = to_gpu(contexts), to_gpu(target)

#Génération de modèles etc.
model = CBOW(vocab_size, hidden_size, window_size, corpus)
# model = SkipGram(vocab_size, hidden_size, window_size, corpus)
optimizer = Adam()
trainer = Trainer(model, optimizer)

#Commencer à apprendre
trainer.fit(contexts, target, max_epoch, batch_size)
trainer.plot()

#Enregistrez les données dont vous avez besoin pour une utilisation ultérieure
word_vecs = model.word_vecs
if config.GPU:
    word_vecs = to_cpu(word_vecs)
params = {}
params['word_vecs'] = word_vecs.astype(np.float16)
params['word_to_id'] = word_to_id
params['id_to_word'] = id_to_word
pkl_file = 'cbow_params.pkl'  # or 'skipgram_params.pkl'
with open(pkl_file, 'wb') as f:
    pickle.dump(params, f, -1)

De plus, il a fallu environ 8 heures pour apprendre dans l'environnement à portée de main. result.png Vient ensuite la confirmation du résultat. J'ai changé un peu ch04 / eval.py pour pouvoir essayer différents mots de l'entrée standard. «★» est la partie modifiée.

ch04/eval.py


# coding: utf-8
import sys
sys.path.append('..')
from common.util import most_similar, analogy
import pickle


pkl_file = 'cbow_params.pkl'
# pkl_file = 'skipgram_params.pkl'

with open(pkl_file, 'rb') as f:
    params = pickle.load(f)
    word_vecs = params['word_vecs']
    word_to_id = params['word_to_id']
    id_to_word = params['id_to_word']

#tâche la plus similaire ★ Changement de la requête en entrée standard
while True:
    query = input('\n[similar] query? ')
    if not query:
        break
    most_similar(query, word_to_id, id_to_word, word_vecs, top=5)


#tâche d'analogie ★ Changement de la requête en entrée standard
print('-'*50)
while True:
    query = input('\n[analogy] query? (3 words) ')
    if not query:
        break
    a, b, c = query.split()
    analogy(a, b, c,  word_to_id, id_to_word, word_vecs)

Voici les résultats de divers essais.

Commencez par rechercher des mots similaires. À titre de comparaison, j'ai également énuméré celui basé sur le décompte que j'ai essayé au chapitre 2. De plus, la taille de la fenêtre de CBOW était de 5 dans le code du livre, mais j'ai également essayé 2, ce qui est identique à la base de comptage.

Mots similaires Base de comptage du chapitre 2
(Taille de la fenêtre: 2)
CBOW
(Taille de la fenêtre: 5)
CBOW
(Taille de la fenêtre: 2)
tu femme: 0.6728986501693726
femme: 0.6299399137496948
K: 0.6205178499221802
père: 0.5986840128898621
je: 0.5941839814186096
tu: 0.7080078125
femme: 0.6748046875
femme: 0.64990234375
Jeune femme: 0.63330078125
je: 0.62646484375
femme: 0.7373046875
tu: 0.7236328125
femme: 0.68505859375
La personne: 0.677734375
prof: 0.666015625
Année Anti: 0.8162745237350464
cent: 0.8051895499229431
Minutes: 0.7906433939933777
Huit: 0.7857747077941895
Cercle: 0.7682645320892334
Cercle: 0.78515625
Minutes: 0.7744140625
Année: 0.720703125
siècle: 0.70751953125
30h30: 0.70361328125
Tsubo: 0.71923828125
Mètre: 0.70947265625
Minutes: 0.7080078125
Minutesの: 0.7060546875
Secondes: 0.69091796875
voiture porte: 0.6294019222259521
Porte: 0.6016885638237
Voiture: 0.5859153270721436
porte: 0.5726617574691772
rideau: 0.5608214139938354
Haut du corps: 0.74658203125
Entrepôt: 0.744140625
Bâtiment de style occidental: 0.7353515625
Escaliers: 0.7216796875
porte: 0.71484375
Escaliers: 0.72216796875
Voiture: 0.7216796875
la grotte: 0.716796875
souterrain: 0.7138671875
porte: 0.71142578125
Toyota Toyotais not found Toyotais not found Toyotais not found
Matin nuit: 0.7267987132072449
Autour: 0.660172164440155
Le midi: 0.6085118055343628
soirée: 0.6021789908409119
La prochaine fois: 0.6002975106239319
soirée: 0.65576171875
Kunimoto: 0.65576171875
la première: 0.65087890625
Tenchobushi: 0.6494140625
Suivant: 0.64501953125
soirée: 0.68115234375
Le midi: 0.66796875
Hier soir: 0.6640625
nuit: 0.64453125
À l'intérieur de la porte: 0.61376953125
école Tokyo: 0.6504884958267212
Plus haute: 0.6290650367736816
Lycée: 0.5801640748977661
Université: 0.5742003917694092
Embarquement: 0.5358142852783203
Université: 0.81201171875
Embarquement: 0.732421875
Sumita: 0.7275390625
étudiant: 0.68212890625
Lycée: 0.6767578125
Lycée: 0.69677734375
Université: 0.68701171875
récemment: 0.6611328125
Tokyo: 0.65869140625
ici: 0.65771484375
Zashiki Étude: 0.6603355407714844
Côté Sou: 0.6362787485122681
Chambre: 0.6142982244491577
chambre: 0.6024710536003113
cuisine: 0.6014574766159058
sol: 0.77685546875
bureau: 0.76513671875
seuil: 0.76513671875
Hall principal: 0.744140625
entrée: 0.73681640625
bureau: 0.69970703125
sol: 0.68603515625
椽: 0.6796875
Étude: 0.6748046875
Zojigaya: 0.6708984375
kimono Le crâne: 0.5216895937919617
noir: 0.5200990438461304
vêtements: 0.5096032619476318
洋vêtements: 0.48781922459602356
chapeau: 0.4869200587272644
Éviter: 0.68896484375
sueur froide: 0.6875
Éveiller: 0.67138671875
sous-vêtements: 0.6708984375
Ce qui signifie: 0.662109375
Costume: 0.68359375
Tourisme: 0.68212890625
coton: 0.6787109375
Jouer: 0.66259765625
硯: 0.65966796875
je Maître: 0.6372452974319458
Supplémentaire: 0.5826579332351685
Kaneda: 0.4684762954711914
ils: 0.4676626920700073
Labyrinthe: 0.4615904688835144
Maître: 0.7861328125
ils: 0.7490234375
Supplémentaire: 0.71923828125
Chat: 0.71728515625
Inévitable: 0.69287109375
Maître: 0.80517578125
ils: 0.6982421875
Chat: 0.6962890625
femme: 0.6923828125
Lessing: 0.6611328125
Criminel Fantôme: 0.6609077453613281
Voleurs: 0.6374931931495667
Membre: 0.6308270692825317
cette personne: 0.6046633720397949
Se plonger: 0.5931873917579651
La prochaine fois: 0.7841796875
patron: 0.75439453125
cette personne: 0.74462890625
bijoux: 0.74169921875
je: 0.73779296875
Pêche au poisson: 0.77392578125
cette personne: 0.74072265625
Bientôt disponible: 0.7392578125
Ballon léger: 0.7021484375
Maladie intraitable: 0.70166015625
commande Parler: 0.6200630068778992
Consultation: 0.5290789604187012
Occupé: 0.5178924202919006
La gentillesse: 0.5033778548240662
Conférence: 0.4894390106201172
Rappel: 0.6279296875
Évaluation: 0.61279296875
diplômé: 0.611328125
Assemblée générale: 0.6103515625
luxe: 0.607421875
Consultation: 0.65087890625
Conseil: 0.63330078125
Évaluation: 0.62451171875
Démission: 0.61474609375
Proposition: 0.61474609375
Pistolet sans arme Obsolète: 0.7266454696655273
Démodé: 0.6771457195281982
vu: 0.6735808849334717
Souffle du nez: 0.6516652703285217
ignorance: 0.650424063205719
Croyance: 0.7353515625
Top tri: 0.7294921875
Protagoniste: 0.693359375
Née: 0.68603515625
À vendre: 0.68603515625
position: 0.724609375
À portée de main: 0.71630859375
Route suivante: 0.71142578125
Visage: 0.70458984375
Matière: 0.69921875
Chat Amen: 0.6659030318260193
Nobujo: 0.5759447813034058
Sumi: 0.5374482870101929
Statut: 0.5352671146392822
d'habitude: 0.5205280780792236
Sagesse: 0.728515625
je: 0.71728515625
Image: 0.70751953125
dyspepsie: 0.67431640625
Gourmandise: 0.66796875
je: 0.6962890625
Lycée: 0.6513671875
amour: 0.64306640625
ils: 0.63818359375
Porc: 0.6357421875
Alcool livre: 0.5834404230117798
thé: 0.469807893037796
Du repos: 0.4605821967124939
Manger: 0.44864168763160706
barre: 0.4349029064178467
Boisson: 0.6728515625
querelle: 0.6689453125
nourriture: 0.66259765625
Yamakoshi: 0.646484375
Soba: 0.64599609375
Violon: 0.63232421875
Salaire mensuel: 0.630859375
médicament: 0.59521484375
Grenade: 0.59521484375
Kira: 0.5947265625
cuisine Écheveau: 0.5380040407180786
Signe: 0.5214874744415283
original: 0.5175281763076782
Loi: 0.5082278847694397
Boutique: 0.5001937747001648
salle: 0.68896484375
Histoire: 0.615234375
roman: 0.59912109375
Arts littéraires: 0.5947265625
prendre: 0.59033203125
magazine: 0.666015625
Cabine: 0.65625
Forgeron: 0.61376953125
musiques: 0.6123046875
Kimono: 0.6083984375

C'est assez déroutant comme c'était le cas au chapitre 2. Aucune supériorité ou infériorité ne peut être donnée. La zone où les «chats» apparaissent dans «moi-même» montre le biais du corpus. Il semble que la raison en soit que la taille du corpus soit trop petite, car il n'utilise que les œuvres de Soseki Natsume, Kenji Miyazawa et Ranpo Edogawa.

Vient ensuite le problème de l'analogie.

Par problème d'analogie CBOW (taille de la fenêtre: 5) CBOW (taille de la fenêtre: 2)
Homme:Roi=femme:? Nu: 5.25390625
Absent: 4.2890625
Zu: 4.21875
Ruru: 3.98828125
merde: 3.845703125
Gros oiseau: 3.4375
Chaque moment: 3.052734375
porte arrière: 2.9140625
Kage: 2.912109375
Pilier de plancher: 2.873046875
corps:visage=Voiture:? Officier de police: 6.5
porte: 5.83984375
Deux personnes: 5.5625
Police: 5.53515625
Chef: 5.4765625
porte: 3.85546875
trou: 3.646484375
Lumière électrique: 3.640625
Police: 3.638671875
épaule: 3.6328125
aller:viens=parler:? Dire: 4.6640625
Onze: 4.546875
Treize: 4.51171875
Ecoutez: 4.25
demander: 4.16796875
Ecoutez: 4.3359375
Regrettable: 4.14453125
Miya: 4.11328125
Dire: 3.671875
Onze: 3.55078125
nourriture:Manger=livre:? Avoir: 4.3671875
Demander: 4.19140625
popularité: 4.1328125
route de montagne: 4.06640625
recevoir: 3.857421875
Rapide: 3.51171875
Aller: 3.357421875
Dire: 3.2265625
Ecoutez: 3.2265625
Commencez à devenir visqueux: 3.17578125
été:chaud=hiver:? Accumuler: 5.23828125
Teru: 4.171875
viens: 4.10546875
Partout: 4.05859375
Aller: 3.978515625
Onze: 4.29296875
Fini: 3.853515625
Treize: 3.771484375
Devenir: 3.66015625
Mal: 3.66015625

Soudain, le premier problème est un mélange de scores faibles mais de résultats angoissants. Des données d'entraînement insuffisantes peuvent provoquer des choses effrayantes. J'ai l'impression d'avoir un aperçu du contexte de la demande récente d'une «IA explicable».

D'autres résultats sont également en lambeaux, mais à peine les bonnes réponses ont été mélangées dans "body: face = car:?" Et "go: come = speak:?". L'apparition de «policiers» et de «policiers» dans des «automobiles» est probablement due à Ranpo Edogawa.

Après tout, j'aurais dû utiliser docilement la version japonaise de Wikipédia, mais c'est une chose diabolique: la sueur: il y a beaucoup de gens qui essaient Wikipédia, donc si vous êtes intéressé, "wikipedia Japanese corpus" Veuillez essayer Google avec.

4.4 Thèmes restants pour word2vec

Le jugement négatif / positif du courrier est expliqué comme un exemple d'apprentissage par transfert, mais avec les connaissances de ce chapitre, même si les mots peuvent être convertis en vecteurs de longueur fixe, les phrases telles que le courrier ne peuvent pas être converties en vecteurs de longueur fixe. .. Par conséquent, nous ne pouvons pas encore contester une telle tâche.

Aussi, en ce qui concerne la qualité des expressions distribuées, dans le cas du japonais, la qualité de l'écriture pré-séparation semble avoir un grand effet. Certains modèles d'expressions distribuées japonais ont été publiés, mais lorsque l'on considère leur apprentissage par transfert, je pense qu'il est indispensable d'utiliser le même mécanisme d'écriture divisionnaire (logique, contenu du dictionnaire, paramètres, etc.). .. Dans ce cas, cela signifie-t-il que l'apprentissage par transfert ne peut pas être facilement réalisé avec des tâches qui traitent de termes techniques spécifiques à l'industrie ou à des entreprises individuelles, par exemple? Le japonais, c'est beaucoup de travail.

4.5 Résumé

La première moitié de ce livre est enfin terminée, mais étant donné que le chapitre 1 était une critique du premier volume, il se peut qu'il en soit encore environ 1/3. La destination semble longue ...

C'est tout pour ce chapitre. Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler.

Recommended Posts

Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 3
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning à partir de zéro.
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Apprentissage profond à partir de zéro
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Deep Learning from scratch Chapter 2 Perceptron (lecture du mémo)
Apprentissage profond à partir de zéro 1 à 3 chapitres
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Créez un environnement pour "Deep Learning from scratch" avec Docker
Apprentissage profond à partir de zéro (calcul des coûts)
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 6 Mémo
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
Apprentissage profond à partir de zéro (propagation vers l'avant)
Apprentissage profond / Apprentissage profond à partir de zéro 2-Essayez de déplacer GRU
"Deep Learning from scratch" avec Haskell (inachevé)
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
Python vs Ruby «Deep Learning from scratch» Chapitre 2 Circuit logique par Perceptron
Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 9) Classe MultiLayerNet
Un amateur a essayé le Deep Learning avec Caffe (Introduction)
GitHub du bon livre "Deep Learning from scratch"
Un amateur a essayé le Deep Learning en utilisant Caffe (Practice)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Un amateur a essayé le Deep Learning avec Caffe (Vue d'ensemble)
Résumé Python vs Ruby "Deep Learning from scratch"
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Version Lua Deep Learning from scratch Part 5.5 [Rendre les fichiers pkl disponibles dans Lua Torch]
[Deep Learning from scratch] J'ai implémenté la couche Affine
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 19) Augmentation des données
Application de Deep Learning 2 à partir de zéro Filtre anti-spam
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage