Ist es sinnvoll, neuronale Netze ohne mathematische Ausbildung zu studieren?


7

Angesichts des modernen Zustands der Technologien und Werkzeuge für maschinelles Lernen (z. B. TensorFlow, Theano usw.) scheint die Einstiegsschwelle in letzter Zeit gesunken zu sein, und es reicht aus, beispielsweise auf Python programmieren zu können, um interessante Dinge zu erstellen. Eine weitere Quelle, die diesen Punkt unterstützt, ist die Spezialisierung auf maschinelles Lernen in Coursera , in der in den häufig gestellten Fragen Folgendes angegeben ist:

Welches Hintergrundwissen ist notwendig?

Sie sollten Erfahrung mit Computerprogrammierung haben; Die meisten Aufgaben in dieser Spezialisierung verwenden die Programmiersprache Python. Diese Spezialisierung wurde speziell für Wissenschaftler und Softwareentwickler entwickelt, die ihre Fähigkeiten auf Datenwissenschaft und maschinelles Lernen ausweiten möchten. Sie eignet sich jedoch für alle, die über grundlegende Mathematik- und Programmierkenntnisse verfügen und Interesse daran haben, Informationen aus Daten abzuleiten.

Auf der anderen Seite gibt es viele andere Online-Kurse (z. B. Stanford Machine Learning auf Coursera oder Googles Deep Learning auf Udacity) sowie klassische Bücher wie S. Haykin, Neuronale Netze: Eine umfassende Grundlage voller Mathematik . Obwohl ich mehrere Jahre an der Universität Mathematik studiert habe, einschließlich Statistik, Matrizen, Integralrechnung usw., wurde es so lange nicht verwendet, dass ich verzweifelt bin, wenn ich nur diese Gleichungen betrachte. Selbst die Konkrete Mathematik von Knuth wird so langsam erkannt, dass es unmöglich erscheint, sie überhaupt zu beenden.

Somit stellen sich folgende Fragen:

  1. Ist es für jemanden mit geringen mathematischen Kenntnissen, aber Programmierkenntnissen sinnvoll, in Studien über neuronale Netze / maschinelles Lernen einzutauchen?
  2. Ist es möglich, interessante Projekte in diesem Bereich zu erstellen, beispielsweise solche , die Atari spielen , und zwar nur mit hochrangigen Tools?

Oder würde es so lange dauern, dass es besser ist, sich nicht zu wehren und etwas anderes zu tun?

Antworten:


5

Es hängt von Ihrer Art der Arbeit ab:

Mathematik ist erforderlich, wenn Sie in einer angewandten Wissenschaftsrolle arbeiten, dh wenn Sie versuchen, mit den bekannten Dingen in der Hand zu experimentieren, dh Worteinbettungen zu versuchen, möglicherweise mit CNN arbeiten und prüfen, ob die Ergebnisse gut sind oder NICHT.

Auf der anderen Seite ist viel Mathematik erforderlich, wenn Sie als Wissenschaftler enden möchten, um beispielsweise beim Text Mining neue Möglichkeiten zur Darstellung der Worteinbettung zu finden oder die vorhandenen Worteinbettungen selbst zu verbessern.

Auf der anderen Seite, wenn Sie als Softwareentwickler im Bereich Maschinelles Lernen ODER als Ingenieur für Maschinelles Lernen arbeiten, müssen Sie die Modelle nur unter Verwendung des vorhandenen Fachwissens trainieren und für eine bessere Leistung optimieren.

Es gibt einen Kompromiss zwischen Forschung und Technik. Mehr in Richtung Forschung ist mehr Mathematik, aber mehr in Richtung Ingenieurwesen ist weniger Mathematik und mehr in Bezug auf die Leistung des Systems in der Produktion.

Ein weiteres zu erklärendes Beispiel wäre für Chat-Bots. Wissenschaftler mit mathematischem Hintergrund müssen eine Arbeit für ein neues Modell schreiben, wie LSTM funktioniert und verwendet werden kann. Ein angewandter Wissenschaftler wird zuerst ein Geschäftsproblem wie das Erstellen eines Chat-Bots mit LSTM ausprobieren und in Labs Artikel veröffentlichen, wie es für ihn funktioniert hat. Ein Ingenieur für maschinelles Lernen repliziert das Konzept, das der angewandte Wissenschaftler für seine Ingenieurarbeit veröffentlicht hat (dh er muss die Mathematik des Papiers verstehen und es in Code replizieren, das war's.)

Hoffe, dies hilft in Bezug auf die Anforderung von Kenntnissen der Mathematik im maschinellen Lernen


3

Google bietet Kurse zum Thema Deep Learning an, um seine Mitarbeiter zu schulen. Angesichts der Tatsache, dass sich die meisten von ihnen in der von Ihnen beschriebenen Situation befinden (nicht viel Erfahrung in Mathematik, aber gute Software-Kenntnisse), würde ich sagen, dass dies ein Beweis dafür ist, dass Sie von Deep Learning profitieren können, ohne sich in Mathematik auszuzeichnen.

Jetzt sind unzählige Tools und Beispielcodes für viele coole Deep-Learning-Projekte online, sodass Sie ganz einfach loslegen und damit spielen können. Zum Beispiel gibt es einen Tensorflow, der bereits nicht viel Wissen über die Funktionsweise des Backpropagation-Algorithmus erfordert, aber es gibt noch einfachere Ebenen, die darauf aufbauen und noch weniger Deep Learning / Theorie-Wissen erfordern, wie z. B. Keras.

Wenn Sie Ihre eigenen erstellen möchten, müssen Sie berücksichtigen, dass Sie manchmal viele Daten und viel Rechenleistung für eine Teilmenge dieser Projekte benötigen. (Zum Beispiel wollten viele Schüler in der MIT-Klasse für maschinelles Lernen das von Ihnen erwähnte Atari-Projekt replizieren, aber die TAs schlugen vor, dies aufgrund mangelnder Rechenleistung auf Google-Ebene nicht zu tun.)

Zu den Dingen, die Sie wahrscheinlich mit 1-2 Tagen Aufwand erledigen können, gehören:

  • Erstellen Sie Ihre eigene, relativ einfache Architektur.
  • Trainieren Sie eine komplexe Architektur (mithilfe von Online-Code) anhand eines Datensatzes, der Sie interessiert.

Wenn Sie schließlich Ihre neue coole Architektur erstellen möchten, die den Stand der Technik übertrifft, würde ich sagen, dass dies schwierig sein wird, ohne die Mathematik dahinter gut zu verstehen.


3

Ich bin ein Doktorand in Computational Neuroscience und arbeite jeden Tag mit dieser Art von Software und anderen Dingen. Wir haben auch viele Studenten, die kommen und ihre Projekte in diesem Bereich machen. Ich habe also ein bisschen Erfahrung.

Ist es für jemanden mit geringen mathematischen Kenntnissen, aber Programmierkenntnissen sinnvoll, in Studien über neuronale Netze / maschinelles Lernen einzutauchen?

Ja, so ist es. Sie können Abstraktionen auf hoher Ebene wie Keras verwenden und sofort loslegen. Meiner Meinung nach müssen Sie die genaue Dynamik des ANN nicht kennen, um es verwenden zu können.

Wie bei allem hängt es stark von Ihnen ab und wie viel Zeit und Mühe Sie investieren möchten. Ich würde sagen, dass Sie ein bisschen Mathematik brauchen, um die Grundlagen zu verstehen. Ein Beispiel sind die Aktivierungsfunktionen in einem neuronalen Netz . Sie spielen eine entscheidende Rolle, sind aber einfach zu verstehen.

Wenn Sie in die Tiefe gehen und wirklich verstehen möchten, wie und warum es funktioniert, benötigen Sie ziemlich umfangreiche mathematische Fähigkeiten. Daran führt kein Weg vorbei. Was ich meine, sind fortgeschrittene Wahrscheinlichkeitstheorie, fortgeschrittene Analysis und fortgeschrittene Algebra. Schauen Sie sich zum Beispiel den Backpropagation-Algorithmus an. . Weitere Informationen zu Mathematik beim maschinellen Lernen finden Sie in diesem Blogbeitrag .

Ist es möglich, interessante Projekte in diesem Bereich zu erstellen, beispielsweise solche, die Atari spielen, und zwar nur mit hochrangigen Tools?

Ja, so ist es. Es gibt viele großartige Tools, mit denen Sie dies tun können. Sobald Sie versuchen würden, etwas Neues zu programmieren, würden Sie natürlich ziemlich bald an Ihre Grenzen stoßen, wenn Sie beispielsweise ein neuronales Netzwerk oder einen Algorithmus so modifizieren möchten, dass es sich verbessert oder schneller wird.

Was Atari betrifft, schlage ich vor, dass Sie diesen schönen Blog- Beitrag lesen . Es erklärt alles so detailliert, dass Sie es implementieren können, aber immer noch flach genug sind, um es zu verstehen.

Um die anderen Antworten zu ergänzen: Ich habe Schüler mit geringen / grundlegenden mathematischen Fähigkeiten, aber guten Programmierkenntnissen gesehen, und sie waren alle in der Lage, eine solide Pipeline für maschinelles Lernen zu implementieren, zu testen und auszuführen. Hier bedeutet eine Pipeline das Sammeln von Daten, die Vorverarbeitung, das Training und die Bewertung des gesamten Systems.

Also ja, du kannst es schaffen.


1

Ich werde meine Antwort auf neuronale Netze beschränken.

Ist es für jemanden mit geringen mathematischen Kenntnissen, aber Programmierkenntnissen sinnvoll, in Studien über neuronale Netze / maschinelles Lernen einzutauchen?

Es ist vernünftig und möglich. Hier sind einige Gründe, um diese Schlussfolgerung zu stützen:

  1. Neuronale Netze sind von der Funktionsweise unseres Gehirns inspiriert. Daher sind viele Konzepte vertraut und leicht zu verstehen: Neuronen, Verbindungen, Aktivierung usw. Dies macht die Einführung in neuronale Netze reibungslos und aufregend und erfordert keine Mathematik.

  2. Die grundlegende Funktionsweise eines neuronalen Netzwerks, unabhängig von seiner Größe, ist leicht zu verstehen: Weiterleiten, Signale, die von einer Ebene zur anderen fließen, Aktivierung von Neuronen usw. Hier ist nicht zu viel Mathematik erforderlich: gewichtete Summen und nichtlineare Funktionen wie Sigmoid.

  3. Die Mathematik, die einigen der grundlegendsten Algorithmen zum Trainieren neuronaler Netze (z. B. Rückausbreitung) zugrunde liegt, ist nicht komplex: Summen, Logarithmen, Multiplikationen und Divisionen. Und Sie berechnen Werte mit konkreter Bedeutung: Fehlerkosten, Gradient usw. Einige andere ML-Techniken erfordern die Berechnung von Zwischenwerten (häufig Matrizen), deren Bedeutung nicht so klar oder intuitiv ist.

  4. Oft ist es nicht die anspruchsvollere Mathematik, sondern das Verstehen und Erleben der Grundlagen, mit denen Sie in fortgeschrittenere Themen wie Regularisierung, Vorschulung, Schulabbrecher usw. eintauchen können.

Zur Verdeutlichung gibt es komplexere Netzwerkarchitekturen und mathematisch anspruchsvolle Algorithmen zum Trainieren neuronaler Netze. Auch wenn die Berechnungen zur Rückausbreitung einfach sind, ist ihre Ableitung für jemanden, der die Analysis nicht studiert hat, komplex. Die Schwierigkeit der Ableitung oder Existenz komplexerer Algorithmen bedeutet jedoch nicht, dass das Studium neuronaler Netze nicht zumutbar ist. Diese Probleme hindern Sie nicht daran, ein gutes Verständnis aufzubauen und neuronale Netze praktisch zu nutzen.

Ist es möglich, interessante Projekte in diesem Bereich zu erstellen, beispielsweise solche, die Atari spielen, und zwar nur mit hochrangigen Tools?

In den letzten Jahren hat das Interesse an neuronalen Netzen (insbesondere Deep Learning) zugenommen. Dies führte dazu, dass, wie Sie beobachtet haben, viele gute Tools und Bibliotheken erstellt wurden, von denen einige aus Fabriken wie Google, Microsoft oder NVidia stammen. Zweifellos reicht die Qualität dieser Projekte aus, um interessante Projekte zu erstellen. Was sich als schwieriger herausstellen könnte, ist die Bereitstellung der richtigen Menge an Qualitätsdaten zum Trainieren Ihres Netzwerks (vorausgesetzt, diese Daten sind derzeit nicht verfügbar).


1
Danke für die Antwort. Darf ich fragen, welche Erfahrungen Sie auf diesem Gebiet gemacht haben und wie Sie NNs verwenden? Kennen Sie auch bestimmte Projekte, die nur mit hochrangigen Tools erstellt wurden oder die von Menschen erstellt wurden, ohne tief in Mathematik einzutauchen?
Queeq

1

Es hängt davon ab, ob. Ich gehe davon aus, dass Sie den Backpropagation-Algorithmus verstehen, wie er von den meisten NN-Architekturen und CNNs und RNNs verwendet wird, und all diese Dinge sind nicht so schwer, wenn Sie Backpropagation kennen.

Einerseits scheint Theano / Tensorflow kein gutes Beispiel zu sein, da es sich im Grunde genommen um DSLs zum Schreiben von Matrix- / Tensor-Berechnungen handelt und sie ziemlich mathematisch und niedrig sind (Sie schreiben die tatsächlichen mathematischen Operationen auf und nicht nur verwenden fit, transform/ predictapi).

Auf der anderen Seite gibt es Keras und Scikit-Learn, die nur Apis auf hoher Ebene haben und nicht so viel Wasser benötigen.

Insbesondere können Sie in Keras einige Modelle verwenden, die vorab trainiert wurden oder über eine vordefinierte Architektur verfügen, von der bekannt ist, dass sie bei einigen Problemen funktioniert.

Wenn Sie keine guten mathematischen Kenntnisse haben, können Sie natürlich auf Probleme mit Black-Box-Modellen stoßen, aber wenn Sie nur Dinge anwenden möchten, die mit etwas anderem zu funktionieren scheinen, dann ist dies definitiv möglich, zum Beispiel beim Auschecken dieses einfache Projekt .

Das könnte Sie auch interessieren kreative Anwendungen von Deep Learning mit TensorFlow , wie es auf nicht - technische Menschen gerichtet zu sein scheint (ich weiß nicht , ob es machbar ist, ohne zu lernen , jeden technischen Hintergrund, aber zumindest ist es enthält viele coole Beispiele).


-3

Die Essenz eines neuronalen Netzwerks ist der Graph. Während Diagramme Teil der Mathematik sein können, sind ihre Konzepte so alt wie die Beziehung selbst und datieren sie vor.

Wenn es notwendig wäre, dass das Lernen komplex ist, hätte sich das Gehirn wahrscheinlich überhaupt nicht entwickelt, da die Wahrscheinlichkeit einer geordneten Komplexität zu unwahrscheinlich ist.

Man muss sich also fragen: Was ist die einfachste Maschine, die lernen kann? Aber das wirft natürlich die erkenntnistheoretische Frage auf: Was ist Lernen?

Lernen ist das Nebeneinander zweier neuartiger Zustände, die eine Erinnerung bilden. Und da haben Sie die Basis der KI: Erinnerung.


1
Dies trägt nicht wirklich zu anderen Antworten bei oder spricht die Frage direkt an.
Nick Cox
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.