Smashing Podcast Folge 33 mit Charlie Gerard: Was ist maschinelles Lernen?
Veröffentlicht: 2022-03-10In dieser Folge sprechen wir über maschinelles Lernen. Für welche Art von Aufgaben können wir es im Kontext der Webentwicklung einsetzen? Ich habe mit dem Experten Charlie Gerard gesprochen, um das herauszufinden.
Notizen anzeigen
- Praktisches maschinelles Lernen in JavaScript: TensorFlow.js für Webentwickler
- Charlie auf Twitter
- Charlies persönliche Seite
Wöchentliches Update
- Eine praktische Einführung in die Abhängigkeitsinjektion
geschrieben von Jamie Corkhill - Auf dem Weg zu einem werbefreien Web: Diversifizierung der Online-Wirtschaft
Geschrieben von Frederick O'Brien - Sollte das Web Hardware-Fähigkeiten offenlegen?
Geschrieben von Noam Rosenthal - So verdienen Sie mehr Geld mit dem Verkauf von Shopify-Apps im Jahr 2021
Geschrieben von Suzanne Scacca - Erste Schritte mit dem GetX-Paket in Flutter-Anwendungen
geschrieben von Kelvin Omereshone
Abschrift
Drew McLellan: Sie ist Senior Front-End-Entwicklerin bei Netlify, eine Google-Entwicklerexpertin für Webtechnologien und eine Mozilla-Tech-Sprecherin. In ihrer Freizeit erforscht sie das Gebiet der Mensch-Computer-Interaktion und baut interaktive Prototypen unter Verwendung von Hardware, maschinellem Lernen und kreativer Codierung. Sie spricht regelmäßig auf Konferenzen und schreibt Blogbeiträge, um die Dinge, die sie lernt, zu teilen. Und zuletzt ist er Autor des Buches „Practical Machine Learning in JavaScript for Apress“.
Drew: Wir wissen also, dass sie eine Front-End-Expertin ist, aber sie ist einmal aus dem Gefängnis geflohen, indem sie eine Metallfeile benutzt hat, die sie aus Träumen gehäkelt hat. Meine großartigen Freunde, willkommen, Charlie Gerard. Hallo Charlie. Wie geht es dir?
Charlie Gerard: Ich bin der Hammer.
Drew: Ich wollte heute mit Ihnen über maschinelles Lernen sprechen, was für einen Podcast, der sich hauptsächlich auf die Art des Browsers und die Webentwicklung konzentriert, wie ein etwas seltsames Thema erscheinen mag. Ich neige dazu, maschinelles Lernen als etwas zu betrachten, das in riesigen Rechenzentren oder Labors mit Menschen in weißen Kitteln passiert. Es ist heutzutage definitiv eine Art Schlagwort. Was um alles in der Welt meinen wir eigentlich, wenn wir maschinelles Lernen sagen?
Charlie: Also im Allgemeinen wäre die Standarddefinition, Computer in die Lage zu versetzen, Vorhersagen zu treffen, ohne dass ihnen gesagt wird, was sie tun sollen. Hoffentlich macht das Sinn, wenn wir weiter darüber reden, aber das ist die Art von allgemeiner Konversationsdefinition. Sie sagen Algorithmen oder Modellen nicht wirklich, dass sie nach bestimmten Dingen suchen sollen. Sie lernen durch Daten, die Sie ihr geben, und können dann Vorhersagen erstellen.
Drew: Anstatt für bestimmte Umstände spezifisch zu codieren, erstellen Sie also eine Art allgemeinen Fall, in dem die Software lernen kann, wie sie diese Dinge selbst erledigt?
Charlie: Ja, genau.
Drew: Das klingt fast ein bisschen gruselig. Es grenzt an diese Art von künstlicher Intelligenz. Muss man dafür ein eingefleischter Mathe-Nerd oder Data Scientist sein? Oder gibt es Dinge wie etablierte Algorithmen und Dinge, auf die Sie zurückgreifen können, um loszulegen?
Charlie: Ja. Zum Glück müssen Sie kein eingefleischter Mathe-Nerd oder Datenwissenschaftler sein. Sonst würde ich definitiv nicht darüber reden. Aber es gibt bereits ausgeklügelte Algorithmen und bereits verfügbare Tools, mit denen Sie diese Algorithmen verwenden können, ohne alles selbst schreiben zu müssen. Wenn wir also das Front-End-Ökosystem als Vergleich verwenden, können Sie Web-APIs wie den Navigator verwenden, um Benutzermedien abzurufen, wenn Sie Zugriff auf die Webcam oder das Mikrofon haben möchten.
Charlie: Und Sie müssen nicht wissen, wie diese API tatsächlich unter der Haube implementiert wurde. Wichtig ist, dass Sie wissen, wofür diese API gut ist und wie Sie sie verwenden, wenn Sie möchten. Dann können Sie später in den Quellcode Ihres Lieblingsbrowsers schauen, um zu erfahren, wie er wirklich funktioniert, aber es ist von vornherein nicht wirklich nützlich. Und es kann nützlich sein, wenn Sie später Ihren eigenen Algorithmus schreiben möchten. Aber um ehrlich zu sein, ist es höchst unwahrscheinlich, dass Sie das tun wollen.
Drew: Okay. Es ist also ein bisschen so, wie Sie CSS schreiben können, um ein Element auf einer Seite zu positionieren. Es ist Ihnen egal, wie der Browser das tatsächlich macht. Sie schreiben einfach etwas CSS und der Browser kümmert sich darum.
Charlie: Ja. Wenn du anfängst, ist es meistens so etwas.
Drew: Das ist gut. Das entspricht eher meinem Niveau der Datenwissenschaft.
Charlie: Ich auch.
Drew: Was sind also die Art von Problemen, auf die Sie maschinelles Lernen anwenden können? Für was ist es gut?
Charlie: Es hängt in erster Linie davon ab, was Sie tun möchten, denn wenn Sie eine bestimmte Sache bauen möchten, würde ich raten, zuerst über die Art des Problems nachzudenken, das Sie lernen möchten, das wird Ihnen dann helfen, einen Algorithmus auszuwählen, der Ihnen gefällt verwenden können, um Ihr Problem zu beheben oder eine Lösung zu finden. Im Allgemeinen würde ich damit beginnen, über die Art des Problems nachzudenken, das ich zu lösen versuche, und es gibt drei Hauptprobleme. Ich denke, es gibt wahrscheinlich ein bisschen mehr, aber im Allgemeinen gibt es für das, wofür ich ausgebildet wurde und was ich gelesen habe, drei Hauptgründe, die erwähnt werden.
Charlie: Wenn Sie möchten, dass ich darauf eingehe, gibt es überwachtes Lernen, unüberwachtes Lernen und bestärkendes Lernen. Du hast auch so viele betreut, aber um ehrlich zu sein, weiß ich nicht wirklich viel darüber, weil ich meine Projekte mit den drei ersten aufbauen konnte.
Drew: Beaufsichtigt, unbeaufsichtigt und Verstärkung, hast du gesagt?
Charlie: Ja, bestärkendes Lernen.
Drew: Okay. Was ist überwachtes Lernen? Können Sie uns ein Beispiel dafür geben, was das bedeutet?
Charlie: Überwachtes Lernen, das ist, wenn Ihr Datensatz aus Merkmalen und Bezeichnungen besteht und Sie dies einem Algorithmus zuführen. Wenn wir also ein Beispiel nehmen, mit dem sich hoffentlich die meisten Menschen identifizieren können, dann ist es, wenn Sie ein Haus haben und es verkaufen möchten, und Sie möchten herausfinden, zu welchem Preis Sie Ihr Haus oder Ihr Haus verkaufen werden Auto, eigentlich wäre es übrigens dasselbe. Und Sie würden einen Datensatz von Häusern in derselben Umgebung oder derselben Art von Häusern verwenden und deren Preis auf dem Markt kennen, Sie wären in der Lage, die Merkmale Ihres eigenen Hauses zu nutzen; Also, wie viele Zimmer und hat es einen Garten und in welcher Nachbarschaft ist es? Und solche Sachen.
Charlie: Dies sind die Merkmale und das Etikett wäre der Preis, und mit all diesen Datensätzen von Häusern, die Sie bereits umgeben, können Sie einen maschinellen Lernalgorithmus verwenden, der die Korrelation zwischen den Merkmalen Ihres Hauses lernt und die Preise auf dem Markt, um dann die Eigenschaften Ihres Hauses zu erhalten und daraus einen Preis generieren zu können. Das Wichtigste beim überwachten Lernen ist also, dass Sie eine Reihe von Funktionen und auch ein Etikett haben, sodass Sie tatsächlich eine Korrelation zwischen den beiden herstellen können.
Drew: Du würdest, du würdest das Modell mit einer riesigen Menge an Daten über Häuser in diesem Beispiel füttern, wo du ihren Preis kennst und dann kennst du all diese Merkmale über sie. Sagen Sie Schlafzimmer und was haben Sie, wie Quadratmeterzahl, und ich denke, der Standort wäre eine andere Sache, die berücksichtigt werden könnte?
Charlie: Ja. Das ist also eines der Probleme beim maschinellen Lernen, dass Sie viele Funktionen haben können und einige davon nicht so effizient sind wie andere. So könnten Sie zum Beispiel die Farbe Ihres Hauses haben, die vielleicht tatsächlich keine Korrelation mit dem Preis hat, aber Sie können eine Reihe von Funktionen angeben, und das Modell findet selbst eine Korrelation zwischen den beiden. Sie können dann Ihren Datensatz anpassen, wenn Sie möchten, und die Farbe entfernen, oder Sie stellen fest, dass die Größe des Gartens keine Rolle spielt oder ähnliches.
Charlie: Also im Allgemeinen, selbst wenn Sie Ihren Datensatz in ein Modell einspeisen, werden Sie beim ersten Mal keine perfekte Vorhersage haben. Normalerweise optimiert man ein paar verschiedene Dinge und sieht. Sie optimieren es, bis es zu einer Vorhersage kommt, die Sie für ziemlich genau halten.
Drew: Und wenn dieses Modell einmal erstellt ist, oder sagen Sie, Sie haben es mit Daten aus einer Stadt erstellt, könnten Sie es dann nehmen und es füttern … müssten Sie es mit Daten aus einer anderen Stadt füttern? Wären Sie in der Lage, es nach Abschluss des Trainings aufzugreifen und an anderer Stelle zu verwenden, oder ist es dann spezifisch für diesen Datensatz, oder wie würde das funktionieren?
Charlie: Ich denke, es wäre spezifisch für den Datensatz. Das bedeutet also, dass Sie einen weiteren Datensatz mit demselben, sagen wir mal, Format erstellen können. Wenn Sie eine Excel-Tabelle mit unterschiedlichen Spalten haben, können Sie die gleiche Bezeichnung und die gleichen Merkmale beibehalten, aber Sie müssten sie durch die Werte dieser Stadt ersetzen. Aber im Allgemeinen bedeutet dies, dass das Sammeln des Datensatzes auch viel Zeit in Anspruch nehmen kann, aber wenn Sie bereits wissen, was Sie beispielsweise für die Stadt Paris getan haben, und dass die Struktur Ihres Datensatzes dieselbe ist, aber Sie ersetzen die Werte, es geht etwas schneller und Sie können das Modell neu generieren.
Charlie: Sie sollten dasselbe Modell nicht wiederverwenden, wenn Ihre Daten unterschiedlich sind, weil die Preise der Häuser in Paris beispielsweise anders sind als in einer kleinen Stadt in Australien. Sie möchten also keine falschen Daten haben, weil der Kern Ihres Datensatzes zunächst nicht genau derselbe war.
Drew: Wir sprechen viel über eine Art Modelle mit maschinellem Lernen. Das Modell ist also so etwas wie das Endergebnis aller Analysen des Datensatzes. Und es wird dann verwendet, um nachfolgende Vorhersagen zu treffen. Das ist das Modell, ja?
Charlie: Ja, genau das ist es. Es ist ein Modell, also ein bisschen wie eine Funktion, die Sie mit neuen Eingaben füttern, die es noch nie zuvor gesehen hat, aber auf dem basiert, was es im Trainingsschritt gelernt hat. es wäre in der Lage, eine Vorhersage auszugeben.
Drew: Also überwachtes Lernen, dann macht es dieses Vorhersagemodell aus Labels auf Features. Was ist unüberwachtes Lernen?
Charlie: Also unbeaufsichtigt ist ein bisschen das gleiche Konzept, aber du entfernst die Etiketten. In diesem Fall können Sie also denken, dass unser Problem, ein Haus zu verkaufen, nicht wirklich ein Problem des unbeaufsichtigten Lernens wäre, denn wenn Sie nur die Eigenschaften der Häuser um Sie herum kennen, aber keinen Preis als Label haben, Sie kann nicht wirklich einen Preis vorhersagen. Es wird nicht einmal wissen, was ein Preis ist.
Charlie: Unüberwacht ist also mehr, wenn Sie einen Datensatz haben und Sie nur Funktionen darüber haben. Sie können mehr Trends oder Cluster von Dingen zusammen generieren. Sie würden unüberwachtes Lernen nicht verwenden, wenn Sie eine bestimmte Ausgabe wünschen, wenn Sie eine bestimmte Frage haben, wie z. B. „Was kostet das?“ Das ist keine wirklich gute Verwendung von Unsupervised, aber es ist mehr, wenn Sie Entitäten zusammenfassen möchten, könnten es Personen oder ähnliche Dinge sein.
Charlie: Ein Anwendungsfall dafür sind normalerweise Empfehlungen wie Amazon-Empfehlungen oder Spotify-Empfehlungen wie „Leute wie Sie hören sich das auch an“, und es geht eher darum, wo die Funktionen in diesem Fall sind … nun, das haben sie Daten über Sie, damit sie wissen, was Sie hören, in welchem Land Sie sich normalerweise aufhalten oder wie oft am Tag Sie etwas hören? Wenn Sie diese Funktionen über Personen verwenden, können sie Sie dann in denselben Cluster oder dieselbe Art von Zuhörern oder dieselbe Art von Personen einordnen, die bestimmte Dinge bei Amazon kaufen. Und durch diese Art des unbeaufsichtigten Lernens können sie wissen, was sie Ihnen gegenüber ankündigen oder was sie Ihnen empfehlen sollten, sich auf der Grundlage von Menschen wie Ihnen anzuhören. Also eher solche Probleme.
Drew: Okay, für mich als Webentwickler macht das alles jetzt viel mehr Sinn, denn diese Art von Verwendungen, über die wir gesprochen haben, Hauspreise und Empfehlungen und das Schalten von Anzeigen und so, am Ende des Tages, Dies sind alle möglichen Dinge, mit denen wir uns befassen müssen, und Funktionen, die wir möglicherweise in eine Website oder ein Produkt einbauen möchten, oder was auch immer Sie haben. Wir haben also die verschiedenen Arten des Lernens basierend auf Themen, die wir vorhersagen möchten. Gibt es andere Arten von Anwendungen, mit denen wir dies auch umsetzen können? Gibt es gute Beispiele, die Leute geschaffen haben, die davon Gebrauch machen könnten?
Charlie: Ja. Es gibt so viele Beispiele. Wenn ich also davon spreche, den Preis eines Hauses vorherzusagen, ist das vielleicht nichts, was Sie betrifft. Vielleicht ist es nicht wirklich aufregend, aber es gibt so viel mehr, was man tun kann. Es gibt wirklich gute Beispiele. Ich glaube, das erste, das ich sah, drehte sich um dynamisch generierte Kunsttexte für Bilder. Das können Sie natürlich selbst tun, wenn Sie einer Website ein Bild hinzufügen.
Charlie: Aber was wäre, wenn Sie eine Website hätten, die wirklich jede Menge Bilder enthält, und anstatt es manuell zu tun, könnten Sie jedes Bild einem maschinellen Lernalgorithmus zuführen, und es würde einen Kunsttext generieren, der beschreibt, worum es bei diesem Bild geht, und Vielleicht wäre der einzige menschliche Schritt, zu überprüfen, ob dies korrekt ist, aber es würde Ihnen wirklich erlauben, Ihre Zeit auf die Erstellung der Anwendung zu konzentrieren.
Charlie: Und Sie würden Ihre Website immer noch zugänglich machen, indem Sie Kunsttext für Bilder haben, aber er würde irgendwie von einer Maschine generiert. Das ist also eines der Beispiele, die ich gesehen habe, als ich damit angefangen habe, aber Sie haben auch einen Prototyp zum Filtern von nicht sicheren Arbeitsinhalten. Und ich dachte, das wäre in einer Chrome-Erweiterung eigentlich ziemlich gut, Sie könnten eine Chrome-Erweiterung haben, die jedes Mal, wenn Sie eine Webseite öffnen, einfach überprüfen würde, ob das, was auf der Seite ist, eine Art sicherer Inhalt ist.
Charlie: Wenn Sie beispielsweise Kinder haben, die Ihren Laptop oder ähnliches verwenden, können Sie die Bilder einfach ausblenden oder diese Bilder durch Pandas ersetzen, wenn Sie möchten, oder so. Aber es ist diese Art von Anwendung, bei der Sie maschinelles Lernen verwenden können, um Dinge automatisch für Sie zu erledigen, sodass Sie sich nicht um bestimmte Aufgaben kümmern müssen, oder Sie können einfach Ihre Gehirnleistung einsetzen, um andere Dinge zu tun.
Charlie: Aber dann gibt es noch etwas Fortgeschritteneres mit einem Beispiel für Gestenerkennung, die Verwendung der Webcam, die damals mit Amazon Alexa und Spracherkennung und all dem Zeug kommunizierte. Sie können also wirklich viele verschiedene Technologien mit Sprache und Webcam und maschinellem Lernen zusammenführen, um nur zu erkennen und mit verschiedenen Technologien interagieren zu können, aber auf eine neue Art und Weise. Es kann also richtig Spaß machen.
Drew: Das ist ziemlich faszinierend, weil wir uns mit der Analyse von Datenmodellen als solche beschäftigt haben und jetzt darüber nachdenken, Bildinhalte zu betrachten und den Inhalt von Bildern mithilfe von maschinellem Lernen zu analysieren, was ziemlich interessant ist. Ich denke, das ist die Art von Funktion, die Facebook hat, wenn jemand ein Bild postet, von dem er denkt, dass es blutig sein könnte oder eine Verletzung oder so etwas zeigt, und es wird verwischt, und dann müssen Sie nur klicken, um es anzuzeigen. Natürlich kann Facebook keine Moderatorenteams haben, die sich jedes hochgeladene Bild ansehen.
Charlie: Ich hoffe, sie tun es nicht.
Drew: Das wäre eine endlose Aufgabe.
Charlie: Das ist auch kein toller Job.
Drew: Ich habe früher auf einer Website mit kostenlosen Anzeigen gearbeitet, auf der Leute Anzeigen schalten konnten. Und da war viel Moderation dabei, da musste sogar ich als Webentwickler mitmachen, einfach durchgehen, all diese Bilder anschauen und sagen: „Ja, nein, ja, nein.“
Charlie: Das habe ich auch ein bisschen gemacht. Ich wünschte, es hätte damals maschinelles Lernen gegeben, nur ein kleines Hilfsmittel, um das für mich zu tun, und jetzt ist es da. Also das ist ziemlich cool.
Drew: Ja, das ist wirklich toll. Und es ist ziemlich aufregend, über Live-Eingaben von einer Webcam nachzudenken und in der Lage zu sein, diese in Echtzeit zu analysieren, sodass Sie gestenbasierte Interaktionen durchführen können. Ist das…
Charlie: Ja, im Kern verwendet es eigentlich mehr Bildklassifizierung, weil Ihre Webcam, ein Bild, eine Reihe von Pixeln ist, aber dann, wenn Sie bestimmte Gesten machen, können Sie einem Modell beibringen, zu erkennen, dass Ihre rechte Hand oben ist und vielleicht Sie würde die Maus so steuern, oder es würde auf die Koordinate Ihrer Hand und des Bildschirms schauen, und Sie würden der Maus folgen. Du könntest wirklich machen was du willst. Sie könnten vielleicht eine Farberkennung haben.
Charlie: Du kannst wirklich lustige Sachen machen. Ein Prototyp, den ich gebaut habe, den ich irgendwann aufgegeben habe, aber ich habe ein bisschen gebaut ... Ich wollte, dass es eine Chrome-Erweiterung wird, aber das hat nicht funktioniert. Ich habe mit Electron eine kleine Desktop-App erstellt. Auch in JavaScript, wo ich eine Webseite durchsuchen konnte, indem ich einfach meinen Kopf neigte. Es würde also erkennen, dass es nach unten scrollt, wenn ich meinen Kopf nach unten neige, und wenn ich nach oben gehe, nach oben geht. Es waren genau diese Art von kleinen Experimenten, bei denen ich dachte: „Nun, wenn ich es dann in eine Chrome-Erweiterung umwandeln kann, könnte es für einige Leute nützlich sein.“
Charlie: Selbst wenn du gerade vor deinem Computer isst und die Nachrichten liest und ich nicht will, dass meine Tastatur schmutzig wird, dann kann ich einfach meinen Kopf neigen, aber dann hoffentlich auch, für die Zugänglichkeit, könnte Menschen tatsächlich helfen, auf bestimmten Webseiten oder ähnlichen Dingen zu navigieren. Es stehen viele Tools zur Verfügung und es geht um die Idee, dass Sie die Situation um Sie herum beobachten können und wie Sie einige dieser Probleme mit maschinellem Lernen lösen könnten.
Drew: Beim maschinellen Lernen denken wir oft an Sprachen, Python. Ich denke, da scheint eine Menge dieser Art von Entwicklung zuerst zu passieren. Aber als Webentwickler fühlen wir uns offensichtlich mit JavaScript im Allgemeinen wohler. Ist maschinelles Lernen etwas, das wir realistischerweise erwarten können? Ich meine, kleine lustige Beispiele sind eine Sache, aber ist es wirklich nützlich für die echte Arbeit in JavaScript?
Charlie: Nun, ich meine, ich denke schon, aber ich weiß, dass die meisten Dinge, die ich mache, Prototypen sind, aber ich denke, dass es dann von der Situation abhängt, in der Sie sich bei der Arbeit befinden. Es gibt Möglichkeiten, maschinelles Lernen als Entwickler in Ihrem Arbeitsalltag umzusetzen. Aber was mir an JavaScript wirklich gefällt, ist die Tatsache, dass Sie, wenn Sie bereits ein Front-End-Entwickler sind, kein neues Ökosystem oder einen neuen Satz von Tools oder eine neue Syntax oder eine neue Sprache lernen müssen. Sie befinden sich bereits in Ihrer Umgebung, in der Sie jeden Tag arbeiten.
Charlie: Normalerweise musst du, wenn du solche Sachen lernst, in deiner Freizeit anfangen, wenn es nicht deine tägliche Arbeit ist und die Zeit aller kostbar ist und du nicht so viel davon hast. Wenn Sie also einige Barrieren beseitigen und im selben Ökosystem bleiben können, das Sie kennen, dann finde ich das ziemlich gut, aber Sie können auch anfangen … Die Stärke von JavaScript liegt für mich darin, dass Sie damit beginnen können, einen kleinen Prototyp zu erstellen, um die Leute davon zu überzeugen Vielleicht gibt es eine Idee, die untersucht werden muss, und indem Sie schnell etwas in JavaScript entwickeln können, können Sie überprüfen, ob Ihre Idee richtig ist.
Charlie: Dann können Sie entweder die Zustimmung der Führung erhalten, mehr Zeit oder mehr Geld aufzuwenden, oder Sie können das dann den Python-Entwicklern geben, wenn Sie es in Python erstellen möchten. Aber für mich ist diese Fähigkeit, eine Idee schnell zu validieren, super wichtig. Vor allem, wenn Sie für ein Startup arbeiten und alles schnell geht und Sie zeigen können, dass es sich lohnt, sich damit zu befassen, denke ich, dass das ziemlich wichtig ist.
Charlie: Und auch die Tatsache, dass es wirklich ein großes Ökosystem von Tools gibt und es immer mehr Frameworks und Anwendungen des maschinellen Lernens gibt. In JavaScript können wir nicht nur auf einer Webseite maschinelles Lernen hinzufügen. Wie ich bereits sagte, können Sie Chrome-Erweiterungen und Desktop-Apps mit Electron und mobile Apps mit React Native und Hardware und IoT mit Frameworks wie Johnny-Five erstellen.
Charlie: Mit der Sprache, die Sie bereits kennen, haben Sie tatsächlich Zugriff auf ein riesiges Ökosystem verschiedener Plattformen, auf denen Sie dasselbe Experiment durchführen können. Und ich denke, das ist für mich ziemlich erstaunlich. Und hier sehe ich die wahre Stärke des maschinellen Lernens in JavaScript. Und wenn es besser wird, können Sie es vielleicht wirklich in die Anwendungen integrieren, die wir täglich erstellen.
Drew: JavaScript ist überall, nicht wahr?
Charlie: Ja.
Drew: Zum Guten oder zum Schlechten, es ist überall. Wer hätte das gedacht? Das klingt großartig, aber es klingt auch nach einer Menge Arbeit. Und ich denke an die Datensätze und Dinge, wie um alles in der Welt fängt man an, diese Art von Aufgaben zu erledigen?
Charlie: Im Moment gibt es, zumindest bei TensorFlow.JS, drei Dinge, die man mit dem Framework machen kann. Nehmen wir an, am einfachsten ist es, ein vorhandenes vortrainiertes Modell zu importieren. Es gibt also ein paar davon, es gibt verschiedene Modelle, die mit verschiedenen Datensätzen trainiert wurden, und ich würde empfehlen, damit zu beginnen, weil Sie die wirklichen Grundlagen lernen können, wie man das Framework selbst tatsächlich verwendet und was Sie tun können mit diesen Modellen.
Charlie: Sie haben also bestimmte Bilderkennungsmodelle, die mit verschiedenen Bildern trainiert wurden. Einige von ihnen eignen sich besser für die Objekterkennung. Einige von ihnen eignen sich besser für die Wiedererkennung von Personen, und wenn wir verstehen, welche Modelle verwendet werden sollen, können wir dann frei bauen, was Sie wollen, und zwar unter den Einschränkungen dieses Modells.
Charlie: Aber ich denke, das ist ein guter Anfang. Ich verwende immer noch vortrainierte Modelle für viele meiner Experimente, weil es auch so ist, warum sollte man das Rad neu erfinden, wenn es schon da ist? Lassen Sie uns einfach die Werkzeuge verwenden, die gegeben wurden. Wenn Sie dann vielleicht einen Schritt weiter gehen möchten, können Sie das sogenannte Transferlernen durchführen, wenn Sie ein wichtiges Modell neu trainieren. Sie verwenden also immer noch eines der vortrainierten Modelle, haben dann aber die Möglichkeit, es live mit Ihren eigenen Beispielen neu zu trainieren.
Charlie: Wenn Sie beispielsweise eine Bildklassifizierung verwenden möchten, bei der Sie verschiedene Personen haben, möchten Sie vielleicht eine Gestenklassifizierung durchführen. Wenn Ihr Modell zum Beispiel mit Leuten trainiert wird, die immer, ich weiß nicht, ihre rechte Hand oben oder so haben, aber für Ihre Anwendung die linke Hand wollen, könnten Sie dieses Modell mit Ihren Proben der linken umschulen Hand, und dann hätten Sie ein Modell, das bereits ziemlich trainiert ist, um die rechte Hand zu erkennen, aber dann würden Sie Ihr eigenes Beispiel hinzufügen und Sie können das ziemlich schnell im Browser neu trainieren, abhängig von der Menge der neuen Eingabedaten, die Sie ihm geben , es dauert ein wenig, aber in wenigen Sekunden haben Sie ein neu trainiertes Modell, das diese beiden Gesten sehr gut erkennt, die Sie dann in Ihrer App verwenden können.
Charlie: Also das ist normalerweise der zweite Schritt. Und dann ist ein dritter Schritt, der etwas komplexer ist, wenn Sie alles im Browser erledigen. Sie schreiben also Ihr eigenes Modell von Grund auf neu und trainieren es im Browser, und Sie trainieren und führen es aus und generieren das Modell, alles im Browser. Aber im Allgemeinen ist die einzige Anwendung, die ich dafür gesehen habe, das Erstellen von Visualisierungen. Wenn Sie den Prozess eines trainierten Modells und die Anzahl der Schritte, die es ausführt, wie lange es dauert, visualisieren möchten, und Sie sehen können, wie die Genauigkeit je nach den von Ihnen ausgewählten Funktionen und den Parametern, die Sie optimieren, nach oben oder unten geht .
Charlie: Ich habe also nicht wirklich damit gespielt, weil ich keine Anwendung für mich gefunden habe, mit der ich bauen wollte, aber die beiden ersten Schritte, nur das vortrainierte Modell zu verwenden oder es mit meinen eigenen Beispielen neu zu trainieren, sind wo ich persönlich gesehen habe. Das hat mir Spaß gemacht.
Drew: Normalerweise wird also das Modell im Voraus erstellt, sozusagen offline, und dann verwendet der Browser dieses trainierte Modell oder fügt vielleicht ein wenig hinzu, es wird ein bisschen neu trainiert, aber im Allgemeinen wird dieses Modell erstellt, bevor es im Browser des Benutzers verwendet wird?
Charlie: Im Allgemeinen ja. Dann können Sie auf jeden Fall Ihr eigenes Modell erstellen. Wenn Sie es tun, würde ich nicht empfehlen, es im Browser zu trainieren, aber Sie können es auch in NodeJS tun. Wenn Sie wissen, ein bisschen NodeJS. Ich habe definitiv meine eigenen Modelle erstellt, aber ich führe sie normalerweise in NodeJS aus, weil es etwas performanter ist. Und dann verwende ich das generierte Modell, das ich dann im Browser erstellt habe.
Drew: Welche Tools gibt es, um dies mit JavaScript zu tun? Sie haben TensorFlow JS erwähnt, aber was ist das, wo ist das? Ist das von Google?
Charlie: Ja. Zuerst hatte Google das TensorFlow-Tool in Python und jetzt, in den letzten, vielleicht ein paar Jahren, vielleicht ein bisschen mehr, haben sie die JavaScript-Version gemacht, also tendiert es dazu, mit JS zu fließen. Aber es gibt auch ML5 JS, das obendrein ein bisschen abstrakt ist. Wenn Sie also etwas verwirrt sind oder TensorFlow JS mit einigen Vokabeln, die sie in ihrer Dokumentation verwenden, etwas beängstigend aussehen, können Sie ML5 JS verwenden, das die meisten der gleichen Funktionen hat, aber sagen wir, die API oder die Syntax ist etwas anfängerfreundlicher.
Charlie: Sie können mit ML5 beginnen, sehen, ob Sie maschinelles Lernen mögen oder ob Sie über eine coole Anwendung nachdenken, und dann, ob Sie vielleicht einige Blocker in ML5 haben oder das Framework bestimmte Dinge nicht hat, die Sie tun möchten, Sie Sie können dann zu TensorFlow JS übergehen, wenn Sie möchten. Und wenn Sie wirklich nicht daran interessiert sind, wirklich Ihren eigenen Code zu schreiben, sondern nur Tools verwenden möchten, die bereits vorhanden sind, gibt es einige APIs von Amazon, Google und Microsoft, um auch Bilderkennung oder Spracherkennung durchzuführen. Wenn Sie also mehr daran interessiert sind, zu sehen, was es kann, aber nicht zu viel Zeit mit dem Schreiben des Codes verbringen möchten, können Sie einige APIs pingen und auch einige ihrer Tools ausprobieren.
Drew: Das ist ziemlich interessant. Sie könnten also vielleicht den Browser verwenden, um Eingaben von einer Webcam oder einem Mikrofon oder was auch immer zu erfassen, und diese dann an Amazon, Microsoft oder wen auch immer senden und sie dann einfach die harte Arbeit machen lassen?
Charlie: Ja.
Drew: Und dann profitiert man eben von den Ergebnissen.
Charlie: Genau.
Drew: Das klingt nach einer netten, verlockenden Möglichkeit, einfach mit den Ideen anzufangen. Es klingt großartig, aber auf welche Probleme können wir dies im Frontend anwenden? Wir haben über ein paar Kleinigkeiten gesprochen, aber gibt es andere Möglichkeiten, wie wir dies nutzen könnten?
Charlie: Es gibt viele Möglichkeiten. Wenn ich mit der Bildklassifizierung beginne, ja, das könntest du. Sie können Bilder aus dem Internet oder von der Webcam Ihres Telefons verwenden. Wenn Sie nur Ihre Website auf Ihrem Telefon verwenden und Fotos machen und Objekte erkennen können, und entweder tun ... Eine kleine Sache, die ich gebaut habe, war rund um das Recycling, wo, wenn ich nicht wirklich weiß, wo ich bestimmte Objekte in welchen Mülleimer werfen soll, wir haben die gelbe Tonne, die grüne, das hängt von den Ländern ab. Sie haben unterschiedliche Farben, aber manchmal bin ich nicht wirklich gut darin, zu wissen, wohin ich Dinge werfen soll, damit Sie kleine Werkzeuge wie dieses bauen können, die live zwei Objekte vor Ihnen erkennen und sie dann klassifizieren können, und Sie können bestimmte Dinge wie bauen Das.
Charlie: Ansonsten gibt es die Textklassifizierung, bei der ich Anfang dieses Jahres eines der TensorFlow GS-Modelle verwendet habe, um mir die geschriebenen Kommentare, GitHub-Probleme und GitHub-PRs anzusehen, um sie dann zu klassifizieren und zu sagen: „Hey, wenn es sich um einen giftigen Kommentar handelt, dann Sie haben einen kleinen Bot, der sagt: „Hey, vielleicht hättest du das nicht schreiben sollen“ oder „Vorsicht, es ist ein bisschen giftig. Wir möchten, dass dies ein sicherer Raum ist.“ „Sie können also eine solche Textklassifizierung verwenden.
Charlie: Es gibt eine Klangklassifizierung, wenn Sie wollen, wo Apple, als sie ihre neue Uhr, OS, herausbrachten, etwas hatte, um das Geräusch von fließendem Wasser zu erkennen, um den Leuten zu sagen, dass sie sich mit der COVID-Pandemie 20 Sekunden lang die Hände waschen sollen, aber Sie können es tun das auch in JavaScript. Und was wirklich interessant war, war, dass ich mir einige der Videos ansah und dachte: „Oh, ich weiß, wie man das in JavaScript macht.“
Charlie: Und ich habe einen kleinen Prototyp gebaut. Ich weiß nicht, ob es auf der Apple Watch läuft. Vielleicht. Ich habe keine, aber ich weiß, dass sie auf meinem Telefon und meinem Laptop läuft. Und dann kann das auch ein paar Ideen für andere Leute sein, wo ein Freund von mir, Ramon Huidobro, @hola_soy_milk auf Twitter. Er hat dieses Jahr an vielen Online-Konferenzen teilgenommen. Und eines seiner Probleme ist, dass er, wenn er klatscht, um jemandem zu applaudieren, nicht die Zeit hat, das Klatsch-Emoji auch im Chat hinzuzufügen. Und er wollte den Klang seines Klatschens hören und das würde automatisch Klatschen-Emojis im Chat senden.
Charlie: Und es sind kleine Dinge wie diese, dass, wenn Sie wollen, eine Anwendung, die in Ihrer täglichen Arbeit wirklich nützlicher ist, sich um vorausschauendes Prefetching dreht. Dazu wird auch maschinelles Lernen im Frontend verwendet, um die Analysen Ihrer Website zu betrachten. Also, welche Seiten werden normalerweise nach welchen angesehen und solche Dinge. Sie können Ressourcen basierend auf der Seite, die am wahrscheinlichsten danach besucht wird, im Voraus abrufen. Das wollte ich schon das ganze Jahr untersuchen, aber ich hatte keine Zeit, aber das ermöglicht es Ihnen, die Leistung und die UX Ihrer Seite wirklich zu verbessern. Und Sie fordern keine Ressourcen an, die Sie nicht benötigen werden, sodass sich das wirklich verbessern kann, und das ist auch eine Anwendung des maschinellen Lernens.
Charlie: Man kann also lustige Sachen machen, oder man kann nützlichere Sachen machen, aber es gibt keine falsche Anwendung, es kann falsche Anwendungen geben. Ich nehme es zurück, aber ich sage nur, dass, wenn Sie wirklich damit anfangen, nichts falsch daran ist, mit etwas Spaßigem zu beginnen, und dann kann ich ein paar Ideen für etwas entwickeln, das Sie bei der Arbeit als tun können Gut.
Drew: Ich denke, das wirklich Nützliche hier ist zu wissen, dass diese Dinge möglich sind. Und eigentlich nur kreative Lösungsansätze, die wir selbst machen können. Traditionell haben wir Dinge durch Moderation von von Benutzern eingereichten Inhalten erstellt, und es war ziemlich primitiv und wir mussten im Grunde Menschen dazu bringen, sich Dinge anzusehen und Entscheidungen darüber zu treffen. Aber mit Zugang zu maschinellem Lernen könnten wir in diesem Beispiel mehr davon abgeben und dann einfach Menschen die Grenzfälle ansehen lassen, zum Beispiel Dinge, die keine überzeugende Übereinstimmung hatten.
Drew: Natürlich wird das dann so sein, es ist ein bisschen Zeit im Voraus, um das Ding zu entwickeln und einzurichten, aber dann denkst du an die Einsparungen, wenn Menschen die Dinge nicht manuell überprüfen müssen. Für welche Dinge können Sie sich vorstellen, dass dies in Zukunft eingesetzt wird, wenn sich die Technologie verbessert?
Charlie: Für mich, vielleicht in der Zukunft, denke ich, dass wir die Datensätze, mit denen sie trainiert werden, wahrscheinlich verbessern, wenn die Modelle kleiner zum Laden und leistungsfähiger werden. Ich hoffe, dass ich Tools sehen kann, die hilfreicher sind. Ich meine, ich persönlich interessiere mich für diese winzigen maschinellen Lernmodelle, die auf Mikrocontrollern laufen können, um Dinge zu bauen. Aber wenn wir mehr in der Front-End-Welt bleiben, hoffe ich auf eine vielleicht bessere Spracherkennung, weil ich das Gefühl habe, dass wir es gewohnt sind, mit einem Trackpad oder einer Tastatur im Internet zu navigieren, aber im Moment gibt es das noch eine Spracherkennung, aber sie ist nicht immer supergenau, oder sie ist zum Beispiel mit Akzenten nicht genau. Und ich hoffe, dass, wenn wir bessere Modelle entwickeln, kleinere Leute nicht mehr so viel Angst haben werden, es ihrer Website hinzuzufügen, weil es die Leistung nicht so stark beeinflusst.
Charlie: Ich interessiere mich für die Verwendung von maschinellem Lernen in Sachen wie Predictive Prefetching, damit wir intelligentere Websites erstellen können, die das Erlebnis in einem Spektrum verbessern, denn für die Benutzer ist es besser, weil die Seite schneller geladen wird, daher die Leistung im Allgemeinen Ihrer Website, es ist besser. Aber sagen wir auch, wenn wir an Nachhaltigkeit denken, hilft es auch, den CO2-Fußabdruck Ihrer Website zu verbessern, wenn Sie keine nutzlosen Ressourcen anfordern. Aber dann ist da noch der CO2-Fußabdruck von Modellen für maschinelles Lernen. Das ist nicht sehr gut. Also lass uns vielleicht nicht darüber reden. Ich würde für die Zukunft denken, ich hoffe nur, Modelle zu haben, die vielleicht leistungsstärker oder kleiner sind, damit die Leute es eher versuchen werden, denn sagen wir mal, es wird weniger Hindernisse für die Leute geben, sich darauf einzulassen , aber mal sehen.
Drew: Gibt es bekannte Einschränkungen und Zwänge, die wir kennen sollten, bevor wir mit einem Machine-Learning-Projekt beginnen?
Charlie: Ja. Es gibt. Ich denke, egal ob Sie es in JavaScript oder Python machen, es gibt Grenzen. Ich denke, wenn Sie etwas bauen möchten, ist das sehr üblich, für das es kein vortrainiertes Modell gibt, eine der Grenzen besteht darin, dass Sie möglicherweise ziemlich viele Daten benötigen und nicht jeder darüber verfügt. So if you're doing something on your own as a side project, and you can't find the data set, it would actually take you quite a long time to get one that would allow you to generate good predictions. You can build a small data set, but you will not be able to push it to production or something if you don't actually have a data set that's consistent enough. So I think the amount of data that you need, training the models can take a lot of time.
Charlie: That depends on the amount of data that you feed it, but depending on the application that you want to will build it with, you have to be aware that it can take a lot of time. I remember when I got started and I was doing it in Python and I wanted to… I forgot what I wanted to do, but my model was running for, it was training for eight hours. And at the end it told me that it failed because of something. And I was like, “You're telling me that at the end, after eight hours,” so it can be a bit frustrating and it can still be experimental and you have to be comfortable with it not being a pure science, not everything is always accurate.
Charlie: At the moment, as some of the models are still, they can be a few megabytes, if you are building something that you know, is most likely going to be seen on a mobile screen, you might want to take into consideration that, well, you don't want to load all that data over 4G network. You might want to warn people that they should be on Wi-Fi or the battery use, or the type of phones can't really handle all of this as well. And then more seriously in terms of liability, you do have to understand why your model predicted certain things. And that can be difficult because the model is a black box. It's a function that you don't really know what's inside. You know what it predicted and based on what you're building, if it makes certain decisions about, I don't know, who gets a loan or who goes to prison, based on whatever, you want to be able to explain how you got to that decision.
Charlie: If you decided to use machine learning to kind of abstract some of the work, so it wouldn't be done by people. That can be quite dangerous, so you have to know what you're doing, and in the end, just remember that it's not perfect. I think people sometimes assume that because we talk about artificial intelligence is just as smart as people, but no, it's still computers. It's still data that is given to them and they make up some predictions and somehow we just trust it, which is scary. But yeah, that's some of the limitations.
Drew: Ja. I guess it may seem like it's intelligent, but it is still artificial. There've been some quite high profile cases in recent times particularly around some of the machine learning stuff with image recognition that have raised issues of bias in machine learning, for example, a model only detecting humans if they have light skin. Are there ethical considerations that we should be making here?
Charlie: To me, that sounds like a really interesting side of machine learning. And that's also why, before I was saying that, remember that it's not perfect. Sometimes I feel like people think that the machine just happens to be right and know all the things by itself, but it's still something that we program. And when an algorithm products or generates a biased result, the algorithm just generated things based on the data that it was given before. So an algorithm itself or a model is not going to know the difference in society between light-skinned people or dark-skinned people. It doesn't know and it doesn't care. The only thing that it knows is that I got given pictures of certain people and I'm just going to generate based on what I know.
Charlie: And the data set that is given to the algorithm is in general generated by us, by people. Maybe it's not the developer using the model, but at some point somebody put together a data set. And I think it's important to remember that we are responsible for making sure that the predictions generated are as fair as possible and as unbiased as possible. And that creates interesting questions then, because then you can go into, “Well, what is fair for people?” or if we think about my example of the GitHub action that I created to look at toxic comments, well, maybe what I think is toxic is not the same thing as what other people think is toxic.
Charlie: It's interesting. There's a really interesting collection of videos by MIT media lab around the ethics and governance of artificial intelligence, and I find that fascinating because it's not about telling people, “Oh, you're a bad person because you used in algorithm that's biased,” or, “You're a bad person because you produced a model that's biased.” Its more about raising certain questions and helping you realize, “Well, actually, maybe I could be better,” because that surface that, “Yes, I forgot to add diverse people to my data set. Let me fix that.” It's not really about say, “Let's not use that model ever again.” Just retrain it. Realize that, “Oh, I forgot this. I can retrain it and we can make it better.” And that's something that I definitely think is interesting.
Charlie: And you have companies really trying to improve on that. When the issue of Google who was translating certain neutral languages into gendered languages, and all of a sudden engineer was male and cook was female. Now they know they've really reworked on that and it's a lot more unbiased and they use the 'they' pronoun as well. They also really try to make it better, but then you have also weird stuff where I think IBM had created a data set called Diversity in Faces, that was supposed to be one of the very few that I said that actually had a diverse spectrum of people. But when I tried to find it to use it, it's not available anymore. So I'm like, “Oh, you had this good initiative. You try to do better than a lot of other people, and now people are going to actually use it.” I don't know, but I think the question is really fascinating because he can really help us improve. And then we improve the tool as well that we're using.
Drew: I guess it pays just to be really careful to be balanced and be diverse when selecting data for training models. I guess that's what it comes down to, isn't it?
Charlie: Yeah. Well, I mean, you're building a tool for the public, in general, right? If it's a tool that everybody can use, so it should reflect everybody really, or you should be really clear and say, “This tool can only be used by these people because the model was trained that way, but it's not really what we should do.” I understand that sometimes it if you've never thought about it, it can be I don't know, you can see it as a burden. I hate that people would think of it that way, but it's also, if you spent all this time, maybe writing your own algorithm or generating your own model and doing all of this work, you can't tell me that finding a diverse data set is the hardest part. I don't think it would be. So I'm hopeful, and I think as more people raise concerns about this, and I think people are watching this space, which is really good because if companies don't do it, they'll do it if we tell them that it's not right. And if you want the adoption of machine learning models, you have to make sure that everybody can use them.
Drew: Of the various tools that are available for doing machine learning in JavaScript, you've worked a lot with TensorFlow JS and you've written a book about it. Tell us about your book.
Charlie: Yes, I did. I did write a book this year about TensorFlow JS. So to help JavaScript developers learn more about machine learning and understand it better. And I think the main goal of this book was to help people dive into machine learning, but making it less scary, because I know that at first I thought about machine learning as this big thing, completely different from the web development that I would never understand anything about. I didn't think that I would have to write my own algorithms and really understand math. And as I've dived into this over the past two and a half years, I realized that it's not really like that. And I was hoping that writing this book could help people realize as well that they can do it and what can be done.
Charlie: And there's also a few projects that you can really put in practice what you're learning, but it was really aimed at people who haven't really looked into ML yet, or who just are curious to learn more. I'm not really diving into the algorithms like the source code of the algorithms, but it's really more telling people, trying to understand what an algorithm does and which one to use and for what. A bit of what we just talked about, but it's explaining contents in a clear way, so hopefully it's less scary and people want to hopefully dive a bit more into it.
Drew: So it's called Practical Machine Learning In JavaScript and is available from Apress, and we'll link it up in the show notes. So I've been learning all about machine learning today. What have you been learning about lately, Charlie?
Charlie: Let's say a thing that I'm diving into that is related to machine learning or I will use machine learning with it, but it's digital signal processing that I want to use with machine learning. As we've talked about the fact that machine learning needs a lot of data, if you want to build your own models, sometimes you have to filter your data to actually get the right prediction. And if we think about it, let's think about noise canceling headphones. In your day-to-day life, you have a lot of noise around you. Let's say you're trying to watch a video on the train and there's people talking around you, and there's a sound of the train. And what you want to focus on is the sound of the video.
Charlie: With digital signal processing, that would be a little bit like your noise canceling headphones, where there's some noise around that you don't care about. So there's some data that you don't want to listen to, and the noise canceling headphones allow you to focus on the sound coming from the video on your phone, so that you can really truly listen and focus on that. What I'm doing with digital signal processing is that I have a bunch of data from a piece of hardware, like an Arduino, but I know that there's a lot of it that I might not care about. I want to filter out the things that I don't care about, so that then I can feed that to a model and get better predictions about gestures or things like that. So you have your data signal that you can either transform or filter.
Charlie: It's like when you use the web API to get sound from your microphone, you can either see the arrays of numbers on your dev tools, or you can transform it into a spectrogram to see the picture of the sound. And that's a little bit of that. To have a better prediction for gestures based on hardware data, I can transform that signal. I've been wanting to do this for a couple of years, but it's something that I know nothing about. It takes time to learn, but now that I know a bit more about the machine learning side, I can learn the digital processing side and I'm getting there. I like this moment where I'm like, “Oh, I start to get it because I spent all this time on it.” And yeah, that's, that's really interesting. I'm going to have you going a bit.
Drew: Charlie you're such a nerd. If you dear listener would like to hear more from Charlie, you can find her on Twitter, where she's @devdevcharlie and her personal website includes links to lots of our experiments and projects, and it's really worth checking out at charliegerard.dev. Her book Practical Machine Learning In JavaScript is available now, and we'll link to that in the show notes. Thanks for joining us today. Charlie, did you have any parting words?
Charlie: Denken Sie daran, etwas Spaß zu haben. Wir haben heute viel über lustige und praktische Dinge gesprochen, aber wenn Sie bereit sind, sich damit zu befassen, denken Sie daran, etwas Spaß zu haben, egal, was Sie bauen möchten.