[PYTHON] Einführung in die Bayes'sche Optimierung

Einführung in die Bayes'sche Optimierung

Ich habe kürzlich von der Bayes'schen Optimierung gehört und sie zusammengefasst. Ich bin kein Spezialist, also habe ich vielleicht etwas falsch geschrieben, aber wenn ich es finde, würde ich es begrüßen, wenn Sie darauf hinweisen könnten.

Motivation zur Bayes'schen Optimierung

Es gibt eine Menge Dinge auf der Welt, mit denen man nur schwer experimentieren kann. Deshalb möchte ich das Experiment systematisch gestalten. Die Bayes'sche Optimierung besteht darin, das nächste Experiment "Bayes-like" basierend auf den Ergebnissen früherer Experimente jedes Mal zu entwerfen. Zum Beispiel die tatsächlich verwendeten Felder

Es scheint so etwas zu geben. Im grundlegendsten Beispiel für die Hyperparametersuche beim maschinellen Lernen denke ich, dass dies häufig manuell oder automatisch durch Rastersuche oder zufällig erfolgt. Mit der Bayes'schen Optimierung können Sie es jedoch besser machen. Bei der Bayes'schen Optimierung wird eine alternative Funktion (Erfassungsfunktion), die das Ergebnis des nächsten Experiments vorhersagt, basierend auf den bisherigen Daten erstellt, der Punkt zur Maximierung der Funktion wird gefunden und das nächste Experiment wird dort durchgeführt.

Intuitive Beschreibung der Bayes'schen Optimierung

Ich denke, dass es eine Erklärung ist, die beim verstärkten Lernen häufig auftaucht, aber wir schwanken zwischen Erforschung und Nutzung. Die Nutzung besteht darin, etwas zu verwenden, von dem bereits bekannt ist, dass es bis zu einem gewissen Grad gut ist, und die Erforschung besteht darin, etwas Unbekanntes herauszufordern und eine völlig andere Erfahrung zu sammeln. Die Bayes'sche Optimierung kann leicht als eine Methode zur Auswahl der nächsten auszuwählenden Aktion beschrieben werden, indem sowohl die Konzepte der Nutzung als auch der Exploration im Rahmen der Optimierung berücksichtigt werden. Mit anderen Worten, verwenden Sie die Erfassungsfunktion, die die Nutzung und Erkundung berücksichtigt. Man kann auch sagen, dass Menschen unbewusst eine Bayes'sche Optimierung in Situationen durchführen, in denen sie etwas kaufen oder zum ersten Mal etwas ausprobieren.

Spezifische Beschreibung der Bayes'schen Optimierung

1459589792Q4eF7i9z6oIH0u61459589786.gif

Das obige GIF ist eine grobe Erklärung der Bayes'schen Optimierung. Erstens ist die gelbe Linie links die wahre Funktion. Die Aufgabe besteht darin, schrittweise Punkte aus den Einschränkungen ((-20,20) dieses Mal) zu entnehmen, um den Punkt zu finden, der diese Funktion maximiert. Dieses Mal ist die Punktbewertung (Experiment) sofort abgeschlossen. Beachten Sie jedoch, dass die Bewertung einige Zeit in Anspruch nimmt. Die rote Linie zeigt den Durchschnittswert der vorhergesagten Werte, die aus den bisherigen Datenpunkten vorhergesagt wurden. Der grüne Bereich repräsentiert das Konfidenzintervall ($ Durchschnitt \ pm Verteilung $). Dieser Mittelwert und diese Varianz werden unter Verwendung des Gaußschen Prozesses basierend auf den erhaltenen Datenpunkten berechnet.

Verwenden Sie die Bayes'sche Optimierung, wenn Sie Punkte auswählen, da Sie sich fragen, wie Sie punkten sollen. Angenommen, Sie wählen den ersten Punkt zufällig aus. Wählen Sie aus den folgenden Punkten den Punkt mit der höchsten Erfassungsfunktion aus. Diese Erfassungsfunktion wird durch die blaue Linie rechts dargestellt. Mit anderen Worten, die Höhepunkte in der blauen Funktion sind sicherlich vielversprechend, also machen wir es als nächstes. Wie bereits erwähnt, kann die Erstellung einer Erfassungsfunktion, die die Suche und Nutzung berücksichtigt, als Schlüssel zur Bayes'schen Optimierung bezeichnet werden.

Eine etwas detailliertere Beschreibung der Bayes'schen Optimierung

Zuerst werde ich GP erklären und dann einige Arten von Erfassungsfunktionen vorstellen. Danach habe ich andere wichtige Dinge in der Literatur zusammengefasst, die ich gelesen habe.

Einführung des Gaußschen Prozesses (GP)

GP ist in erster Linie ein stochastischer Prozess. Ein stochastischer Prozess ist eine Menge stochastischer Variablen {$ X_ {t} } ( t \ in T $). (Bei der Signalverarbeitung ist $ T $ die Zeit. Im Kontext von GP beim maschinellen Lernen ist dies der Eingabebereich.)

Wenn beispielsweise $ T $ diskret ist, gibt es den diskreten Markov-Prozess, und wenn er kontinuierlich ist, gibt es den Wiener-Prozess. Es ist sehr wichtig, dass der stochastische Prozess als eine Funktion der Zeit oder nur als eine stochastische Variable betrachtet werden kann, die zu einem bestimmten Zeitpunkt durch Ändern des Fixierten herausgeschnitten wird. Ersteres wird oft als Abtastpfad bezeichnet. Auch die Existenz eines kontinuierlichen stochastischen Prozesses ist garantiert, wenn die "Konsistenz" erreicht ist. [^ 1] Im Gaußschen Prozess folgt die gleichzeitige Verteilung von y für jede Menge von x einer Gaußschen Verteilung. Zu diesem Zeitpunkt garantiert die Befriedigung der "Konsistenz" die Existenz eines solchen kontinuierlichen stochastischen Prozesses. Die Gaußsche Verteilung wird eindeutig bestimmt, sobald die Varianz und der Mittelwert bestimmt sind. Der stochastische Prozess, bei dem der Mittelwert 0 ist und die Varianz als Kernel ausgedrückt wird, ist der Gaußsche Prozess im Kontext des maschinellen Lernens.

[^ 1]: Es ist eine leicht verständliche Behauptung, dass Konsistenz bei Marginalisierung erreicht werden sollte, aber der Beweis ist ziemlich kompliziert. Bewiesen von Kolmogorov. Die genaue Diskussion stochastischer Prozesse über einen kontinuierlichen Zeitraum kann eine entmutigende Aufgabe sein.

Beschreibung der Kernel-Regression

Die einfachste Interpretation der Kernel-Regression besteht darin, die Ridge-Regression durch den Kernel zu ersetzen. Im Kontext der Bayes'schen Optimierung ist die Interpretation als Gauß'scher Prozess jedoch wichtig, daher werde ich das schreiben. Angenommen, Sie haben $ x $, $ y $, $ t $. x ist die Eingabe und y ist die Ausgabe. t ist y mit Rauschen (Dispersion ist $ \ beta $) und repräsentiert den tatsächlich beobachteten Wert. Zunächst sei der Prior von y $ N (0, K) $ (K ist die Gramm-Matrix des Kernels). Dann wird die hintere Verteilung (vorhergesagte Verteilung) von $ t_ {N + 1} $ nach Beobachtung des N-Punkts für $ x_ {N + 1} $ bestimmt. Diese hintere Verteilung ist Gaußsch und der Mittelwert und die Varianz sind wie folgt.

$ \ mu_ {N + 1} = k ^ {T} (K + \ beta I) ^ {-1} t_ {1: N} $ ($ k (x_ {n}, x_ {N + 1}) $ Die Seite an Seite ist $ k $)

$ \sigma_{N+1}= k(x_{N+1},x_{N+1})-k^{T}(K+\beta I)^{-1}k$

Design der Erfassungsfunktion

Definieren Sie die Erfassungsfunktion ($ a (x) $), um oben $ x_ {N + 1} $ auszuwählen. Erstellen Sie, wie oben erwähnt, eine Funktion, die den Kompromiss zwischen Nutzung und Suche erfolgreich erfasst. Unter dem Gesichtspunkt der "Auslastung" sollte der Punkt mit einem hohen Durchschnitt ausgewählt werden, und unter dem Gesichtspunkt der "Suche" sollte der Punkt mit einer hohen Streuung ausgewählt werden. Von nun an repräsentiert $ f_ {+} $ die maximale Ausgabe an den Punkten, die bis zum N-ten Punkt erhalten wurden. Der Code wird vorerst hier angegeben. https://github.com/Ma-sa-ue/practice/blob/master/machine%20learning(python)/bayeisan_optimization.ipynb

Probability of Improvement(PI) 1459578637h1DiBeEHdcLl6UW1459578633.gif

Z = \frac {\mu(x)-f^{+}- \xi}{\sigma(x)},a_{PI}(x)= \Phi (Z)

$ \ Phi $ ist eine normalverteilte PDF-Datei. Sie können aus dem GIF sehen, dass es nicht so gut ist. $ \ Xi $ wird bereitgestellt, um zu verhindern, dass es zu gierig wird, aber es wird immer noch häufiger verwendet. Expected Improvement(EI)

1459589792Q4eF7i9z6oIH0u61459589786.gif

a_{EI}(x)=(\mu (x)-f_{+}-\xi)\Phi (Z)+\sigma (x)\phi (Z)

$ \ phi $ ist ein normalverteiltes PDF. Dies ist eine viel bessere Methode als PI. Wenn man den erwarteten Wert der Verbesserung ($ f_ {N + 1} (x) -f ^ {+} $) nimmt, ergibt sich das Obige. Es scheint, dass ungefähr 0,01 für $ \ xi $ empfohlen wird.

GP Upper (lower) Confidence Band

14595791439NFETVIUPDKiNWu1459579137.gif

a_{UCB}(x)=\mu (x)+k_{N} \sigma (x)

Dies ist auch eine einfache Methode (Upprt Confidence Bound), bei der der ursprünglich auf die Varianz angewendete Koeffizient eine Konstante ist. Dies funktioniert jedoch nicht sehr gut, sodass GP-UCB den Koeffizienten für jedes Update anpasst. Sie können sehen, dass es die gleiche Tendenz wie EI zeigt.

Thomson sampling

Nehmen Sie einen Beispielpfad und verwenden Sie ihn als Erfassungsfunktion.

Information-theoretic approaches

Verwenden Sie Funktionen, die auf der Informationstheorie basieren.

Andere

Ich denke, dass das Grundkonzept wahrscheinlich das Ende dessen ist, was bisher geschrieben wurde, aber verschiedene Studien wurden basierend auf diesen Dingen durchgeführt. Während ich die Gliederung erfasste, versuchte ich vorerst zusammenzufassen, was wichtig zu sein scheint, obwohl es oben nicht geschrieben steht.

Was ist mit hochdimensionaler Erforschung?

Es wurde ein Verfahren vorgeschlagen, bei dem die Diversitätshypothese für die Eingabe der Suche gilt, dh die Optimierung wird durchgeführt, während die Dimension basierend auf der Hypothese verringert wird, dass es sich um eine niedrigdimensionale Subvariante handelt. Es scheint eine wirklich gute Technik zu sein. http://arxiv.org/pdf/1301.1942.pdf

Wirksamkeit der Eingangsverzerrung

Wenn Sie einen normalen Kernel einsetzen, handelt es sich um einen stetigen stochastischen Prozess. Reale Daten sind jedoch häufig nicht stationär. Die Idee ist, eine Bayes'sche Optimierung durchzuführen, indem die Eingabe mit einer vollständig monomorphen Funktion verzerrt wird, um einen solchen instationären stochastischen Prozess darzustellen. http://jmlr.org/proceedings/papers/v32/snoek14.pdf

Welchen Kernel wählst du überhaupt?

Die Auswahl eines Kernels ist sehr wichtig. Im Experiment habe ich einen einfachen mit einem quadratischen Exponenten verwendet, aber es scheint, dass es verschiedene Kernel für die Bayes'sche Optimierung gibt.

Was tun mit Kernel-Hyperparametern?

Das Einstellen der Hyperparameter des Kernels ist ein ärgerliches Problem. Zum Beispiel scheint die in der berühmten Bibliothek Spearmint verwendete Methode Hyperparameter ungefähr zu integrieren und zu eliminieren. https://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf

Ist es nicht wirklich einfach?

Die Bayes'sche Optimierung selbst gibt es schon seit geraumer Zeit. Es scheint, dass die Bayes'sche Optimierung mit der Entwicklung des maschinellen Lernens für die Hyperparametersuche wiederbelebt wurde. Ich habe vielleicht schon lange etwas an mir geschrieben, aber auf der jüngsten Forschungsebene habe ich verschiedene Entwicklungen sowohl in Bezug auf die Theorie als auch in Bezug auf die Anwendung gemacht.

Wie kann die Erfassungsfunktion maximiert werden?

Es ist zu beachten, dass die Bayes'sche Optimierung unter der Voraussetzung durchgeführt wird, dass die Beobachtung der Zielfunktion problematisch ist. Sie können $ y $ für das Video sofort bekommen, aber natürlich können Sie es nicht sofort bekommen. Andererseits ist die Bewertung der Erfassungsfunktion einfach. Es gibt jedoch keine Garantie dafür, dass es konvex oder differenzierbar ist. Daher verwenden wir eine primitive Methode wie das Teilen des Intervalls, um den Maximalwert zu ermitteln. (vielleicht)

Sind die Kosten für die Beobachtung der Zielfunktion nicht für jede Eingabe unterschiedlich?

Es wird davon ausgegangen, dass die Beobachtungskosten angemessen sind, aber es stimmt immer noch, dass die Kosten je nach Eingabe unterschiedlich sind. Es scheint ein Modell zu geben, das dies berücksichtigt.

Referenzen (Ehrlich gesagt ist es besser, diesen Artikel zu lesen, als diesen Artikel zu lesen)

Recommended Posts

Einführung in die Bayes'sche Optimierung
Einführung in Private TensorFlow
Eine Einführung in das maschinelle Lernen
Einführung in die nichtlineare Optimierung (I)
Eine Einführung in Mercurial für Nicht-Ingenieure
Erste Schritte mit Python für Nicht-Ingenieure
[Python Tutorial] Eine einfache Einführung in Python
Einführung in MQTT (Einführung)
Einführung in Scrapy (1)
Einführung in Scrapy (3)
Erste Schritte mit Supervisor
Einführung in Tkinter 1: Einführung
Eine Einführung in OpenCV für maschinelles Lernen
Einführung in PyQt
Einführung in Scrapy (2)
Anwenden der Bayes'schen Optimierung auf das Keras-DNN-Modell
Rekursives neuronales Netzwerk: Eine Einführung in RNN
[Linux] Einführung in Linux
Einführung in Scrapy (4)
Einführung in discord.py (2)
Eine Einführung in Python für maschinelles Lernen
Eine Einführung in die Objektorientierung - Geben Sie einem Objekt ein Kind.
Eine Einführung in Python für C-Sprachprogrammierer
Was ist ein Algorithmus? Einführung in den Suchalgorithmus] ~ Python ~
Eine Einführung in maschinelles Lernen für Bot-Entwickler
Eine Einführung in Cython, ohne tief zu gehen
Eine Einführung in die statistische Modellierung für die Datenanalyse
Einführung in Python "Re" 1 Erstellen einer Ausführungsumgebung
Eine Einführung in die Sprachanalyse für Musik-Apps
Einführung in Cython ohne tief zu gehen -2-
Einführung in Lightning Pytorch
Erste Schritte mit Web Scraping
Einführung in nichtparametrische Felder
Einführung in EV3 / MicroPython
Einführung in die Python-Sprache
Einführung in die TensorFlow-Bilderkennung
Einführung in OpenCV (Python) - (2)
Einführung in PyQt4 Teil 1
Einführung in die Abhängigkeitsinjektion
Einführung in Private Chainer
Ich habe die Bayes'sche Optimierung ausprobiert!
Einführung in das maschinelle Lernen
Einführung in die verteilte Parallelverarbeitung von Python durch Ray
Lesehinweis: Einführung in die Datenanalyse mit Python
Einführung in Word2Vec, die auch Katzen verstehen können
Ich habe versucht, die Bayes'sche Optimierung zu durchlaufen. (Mit Beispielen)
Einführung in das maschinelle Lernen mit Simple Perceptron
AOJ Einführung in die Programmierung Thema Nr. 1, Thema Nr. 2, Thema Nr. 3, Thema Nr. 4
Einführung in das elektronische Papiermodul
Einführung in den Wörterbuch-Suchalgorithmus
Einführung in die Monte-Carlo-Methode
[Lernmemorandum] Einführung in vim
Einführung in PyTorch (1) Automatische Differenzierung
opencv-python Einführung in die Bildverarbeitung
Einführung in das Schreiben von Cython [Notizen]
[Einführung in cx_Oracle] Übersicht über cx_Oracle
Eine super Einführung in Linux
Einführung in das maschinelle Lernen mit scikit-learn-Von der Datenerfassung bis zur Parameteroptimierung
AOJ Einführung in die Programmierung Thema Nr. 7, Thema Nr. 8