[PYTHON] Kategorisieren Sie Nachrichtenartikel mit Deep Learning

Einführung

Aus dem Nachrichtenartikel Bag-of-Words (BoW) habe ich versucht, Kategorien mit Stacked Denoising Autoencodern vorherzusagen.

Datensatz

Der Datensatz verwendet Livedoor News Corpus.

Bei diesem Korpus handelt es sich um eine Sammlung von Nachrichtenartikeln, auf die die folgende Creative-Commons-Lizenz für "Livedoor News" von NHN Japan Co., Ltd. angewendet wird. Sie wird erstellt, indem HTML-Tags so weit wie möglich entfernt werden.

Es scheint.

--Topic Nachrichten

Da es insgesamt 9 Kategorien gibt, wird es zu einem 9-Klassen-Klassifizierungsproblem.

Datenvorverarbeitung

Zuerst müssen Sie den Artikel BoW erstellen, der von yasunoris Random-Forest-Example erstellt wird. -Forest-Beispiel) corpus.py wurde verwendet.

python corpus.py

Erstellt beim Ausführen ein Wörterbuch (livingoordic.txt). Nur zum ersten Mal ausführen. Erstellen Sie als Nächstes die Daten, die als Eingabe angegeben werden sollen. Ich habe corpus.py nur für die Methode get_class_id als ↓ umgeschrieben, aber ich habe es vor langer Zeit getan, daher kann ich mich nicht erinnern, warum es passiert ist. .. ..

corpus.py


def get_class_id(file_name):
    '''
Bestimmen Sie die Klassen-ID aus dem Dateinamen.
Ich benutze es beim Erstellen von Trainingsdaten.
    '''
    dir_list = get_dir_list()
    dir_name = filter(lambda x: x in file_name, dir_list)
    return dir_list.index(dir_name[0])
import corpus
import numpy as np

dictionary = corpus.get_dictionary(create_flg=False)
contents = corpus.get_contents()

data = []
target = []
for file_name, content in contents.items():
	data.append(corpus.get_vector(dictionary, content))
	target.append(corpus.get_class_id(file_name))
data = np.array(data, np.float32) #Daten als Eingabe angegeben
target = np.array(target, np.int32) #Richtige Antwortdaten

Stacked Denoising Autoencoders Dieses Mal werden wir Entrauschungs-Autoencoder mit vertieften gestapelten Entrauschungs-Autoencodern (SDA) trainieren. Die Implementierung verwendet Chainer. Versuchen Sie für eine Erklärung von Autoencoder Autoencoder mit [[Deep Learning] Chainer] von kenmatsu4 und visualisieren Sie die Ergebnisse. ](Http://qiita.com/kenmatsu4/items/99d4a54d5a57405ecaf8) ist persönlich sehr leicht zu verstehen. SDA verwendet drei Autoencoder, Dropout- und Masking-Rauschen, um Überlernen zu verhindern, und ReLU für die Aktivierungsfunktion. Das Verhältnis von Trainings- und Bewertungsdaten beträgt 9: 1. Der SDA-Code heißt SDA.py in meinem GitHub-Repository (https://github.com/hogefugabar/deep-learning-chainer). Der ausgeführte Code sieht wie folgt aus.

import numpy as np
from SDA import SDA
from chainer import cuda

cuda.init(0)

rng = np.random.RandomState(1)
sda = SDA(rng=rng,
		  data=data,
		  target=target,
		  n_inputs=6974,
		  n_hidden=[500,500,500],
		  n_outputs=9,
		  gpu=0)
sda.pre_train(n_epoch=10)
sda.fine_tune(n_epoch=30)

Ausführungsergebnis

SDA

C:\Python27\lib\site-packages\skcuda\cublas.py:273: UserWarning: creating CUBLAS
 context to get version number
  warnings.warn('creating CUBLAS context to get version number')
--------First DA training has started!--------
epoch 1
train mean loss=0.106402929114
test mean loss=0.088471424426
epoch 2
train mean loss=0.0816160233447
test mean loss=0.0739360584434
--
Unterlassung
--
epoch 9
train mean loss=0.0519113916775
test mean loss=0.0670968969548
epoch 10
train mean loss=0.0511762971061
test mean loss=0.0661109716832
--------Second DA training has started!--------
epoch 1
train mean loss=1.28116437635
test mean loss=0.924632857176
epoch 2
train mean loss=0.908878781048
test mean loss=0.763214301707
--
Unterlassung
--
epoch 9
train mean loss=0.500251602623
test mean loss=0.55466137691
epoch 10
train mean loss=0.485327716237
test mean loss=0.517578341663
--------Third DA training has started!--------
epoch 1
train mean loss=1.0635086948
test mean loss=0.778134044507
epoch 2
train mean loss=0.656580147385
test mean loss=0.612065581324
--
Unterlassung
--
epoch 9
train mean loss=0.433458953354
test mean loss=0.486904190264
epoch 10
train mean loss=0.400864538789
test mean loss=0.46137621372
fine tuning epoch  1
fine tuning train mean loss=1.33540507985, accuracy=0.614027133827
fine tuning test mean loss=0.363009182577, accuracy=0.902306635635
fine tuning epoch  2
fine tuning train mean loss=0.451324046692, accuracy=0.869683239884
fine tuning test mean loss=0.235001576683, accuracy=0.945725910052
fine tuning epoch  3
fine tuning train mean loss=0.233203321021, accuracy=0.937104056863
fine tuning test mean loss=0.172718693961, accuracy=0.952510164098
fine tuning epoch  4
fine tuning train mean loss=0.156541177815, accuracy=0.957164381244
fine tuning test mean loss=0.167446922435, accuracy=0.962008120247
--
Unterlassung
--
fine tuning epoch  27
fine tuning train mean loss=0.0105007310127, accuracy=0.997586716714
fine tuning test mean loss=0.217954038866, accuracy=0.960651269438
fine tuning epoch  28
fine tuning train mean loss=0.00783754364192, accuracy=0.998340867404
fine tuning test mean loss=0.206009919964, accuracy=0.957937559732
fine tuning epoch  29
fine tuning train mean loss=0.00473990425367, accuracy=0.998491696822
fine tuning test mean loss=0.245603679721, accuracy=0.95793756782
fine tuning epoch  30
fine tuning train mean loss=0.00755465408512, accuracy=0.998190036187
fine tuning test mean loss=0.228568312999, accuracy=0.962008120247

Das Übergangsdiagramm der Klassifizierungsgenauigkeit ist wie folgt.

Mehrschichtiges Perceptron

Ich wollte herausfinden, was passieren würde, wenn ich kein Vorlernen durchführen würde, also experimentierte ich auch mit einem mehrschichtigen Perzeptron mit derselben Struktur. Wie bei SDA wird Dropout verwendet, um Überlernen zu verhindern, und ReLU wird als Aktivierungsfunktion verwendet.

abschließend

In Bezug auf die endgültige Klassifizierungsgenauigkeit lag der SDA bei etwa 95%, was ein sehr gutes Ergebnis war. Das mehrschichtige Perzeptron beträgt etwa 92%, was zeigt, dass die Generalisierungsleistung schlechter ist als die von SDA, aber die Glaubwürdigkeit des Ergebnisses ist verdächtig, da das Experiment nur einmal durchgeführt wurde.

Ich würde es begrüßen, wenn Sie auf merkwürdige Punkte hinweisen könnten.

Recommended Posts

Kategorisieren Sie Nachrichtenartikel mit Deep Learning
Deep Kernel Learning mit Pyro
Versuchen Sie Deep Learning mit FPGA
Generiere Pokemon mit Deep Learning
Identifikation der Katzenrasse mit Deep Learning
Machen Sie ASCII-Kunst mit tiefem Lernen
Versuchen Sie es mit TensorFlow Part 2
Überprüfen Sie die Kniebeugenform mit tiefem Lernen
Snack-Umsatzprognose mit Deep Learning
Tiefes Lernen
Bringen Sie Menschen mit Deep Learning zum Lächeln
[Maschinelles Lernen] Cluster-Yahoo-News-Artikel mit MLlib-Themenmodell (LDA).
Klassifizieren Sie Anime-Gesichter mit tiefem Lernen mit Chainer
Probieren Sie die Bitcoin-Preisprognose mit Deep Learning aus
Versuchen Sie es mit Chainer Deep Q Learning - Launch
Versuchen Sie mit Kipoi tiefes Erlernen der Genomik
Emotionale Analyse von Tweets mit Deep Learning
Deep Learning Memorandum
Starten Sie Deep Learning
Deep Learning × Python
Die Geschichte des tiefen Lernens mit TPU
99,78% Genauigkeit bei tiefem Lernen durch Erkennen von handgeschriebenem Hiragana
Erstes tiefes Lernen ~ Kampf ~
Python lernen mit ChemTHEATER 03
"Objektorientiert" mit Python gelernt
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Python lernen mit ChemTHEATER 05-1
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Deep Learning 1 Übung des Deep Learning
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Python lernen mit ChemTHEATER 02
Ich habe versucht, tief zu lernen
Klassifizieren Sie Artikel mit Tags, die von Qiita durch unbeaufsichtigtes Lernen angegeben wurden
Python lernen mit ChemTHEATER 01
Klassifizieren Sie Anime-Gesichter durch Fortsetzung / Deep Learning mit Keras
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Deep Learning / Softmax-Funktion
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
[Evangelion] Versuchen Sie, mit Deep Learning automatisch Asuka-ähnliche Linien zu erzeugen
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Erkennen Sie Ihren Chef mit Deep Learning und verbergen Sie den Bildschirm
Ich habe das Toho-Projekt mit Deep Learning aufgenommen ... ich wollte.
Deep Learning mit Shogi AI auf Mac und Google Colab
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
HIKAKIN und Max Murai mit Live-Spielvideo und Deep Learning
Vorzeichenkurvenschätzung mit selbst erstelltem Deep Learning-Modul (Python) + LSTM
Maschinelles Lernen mit Pokemon gelernt
Deep Learning von Grund auf 1-3 Kapitel
Deep Learning Gaiden ~ GPU-Programmierung ~
<Kurs> Tiefes Lernen: Day2 CNN
Deep Running 2 Tuning von Deep Learning
Über das Lernen mit Google Colab