72

Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion
Page 2: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Verlag

Software&SupportMediaGmbH

AnschriftderRedaktion:

JAXenterSoftware&SupportMediaGmbHSchwedlerstraße8D-60314FrankfurtamMainTel.+49(0)69630089-0Fax.+49(0)[email protected]

Chefredakteur:SebastianMeyen

Redaktion: Hartmut Schlosser, Melanie Feldmann, KyprianiSinaris,DominikMohilo,GabrielaMotroc

ChefinvomDienst/LeitungSchlussredaktion:NicoleBechtel

Schlussredaktion:JenniferDiener

LeitungGrafi&Produktion:JensMainz

Layout:DominiqueKalbassi

Titel:©istockphoto.com/susaro

AutorendieserAusgabe:Dr. Lars Schwabe, BerndFondermann,Dr.Valentin Steinhauer,RomanSchacherl,DanielSklenitzka,Prof.Dr.DorotheaKolossa,FranciscoWebber, IanKelly, XiangruiMeng,Matt Taylor, PeterReutemann,PatFerrel

Software&SupportMediaGmbHAnikaStockTel.:+49(0)69630089-22Fax:+49(0)69630089-89anika.stock@sandsmedia.comEsgiltdieAnzeigenpreislisteMediadaten2016©Software&SupportMediaGmbH

Alle Rechte, auch für Übersetzungen, sind vorbehalten.Reproduktionen jeglicher Art (Fotokopie, Nachdruck,Mikrofilmoder Erfassung auf elektronischen Datenträgern) nur mit

Page 3: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

schriftlicher Genehmigung des Verlages. Eine Haftung für dieRichtigkeitderVeröffentlichungenkanntrotzPrüfungdurchdieRedaktion vom Herausgeber nicht übernommen werden.Honorierte Artikel gehen in das Verfügungsrecht des Verlagsüber. Mit der Übergabe der Manuskripte und Abbildungen anden Verlag erteilt der Verfasser dem Herausgeber dasExklusivitätsrecht zur Veröffentlichung. Für unverlangteingeschickte Manuskripte, Fotos und Abbildungen keineGewähr.JavaTMisteineingetragenesWarenzeichenvonOracleund/oderihrenTochtergesellschaften.

Page 4: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

WiewirMaschinendasDenkenlehren…„DieMechanisierungdesDenkenswarundisteinedergroßenMotivationenfürdieInformatikalsWissenschaft.“

Mit diesem Zitat von Lars Schwabe eröffnen wir das Themen-DossierzumMaschinellenLernen.

Schön,dassSieauchdasind!Es besteht kein Zweifel: Autonome Fahrzeuge, intelligente„Chatbots“, smarte Heimassistenten und lernende Diagnose-Systeme werden bald zu unserem Alltag gehören. Gartnerprophezeit, dass ML bereits in zwei bis fünf Jahren imMainstreamangekommenseinwird.

Vielesdeutetalsodaraufhin,dassMLkurzvordemDurchbruchsteht:IndenletztenJahrenwurdenindenBereichen„KünstlicheIntelligenz“ und „Machine Learning/Deep Learning“ riesigeFortschritte erzielt. Was Lars Schwabe nun in obigem Zitatanspricht, ist die Tatsache, dass es gerade Software-Entwicklersind,dieeineSchlüsselrolledabeispielen,ML-SystemenausderForschungs-undBasteleckeinalltagstauglicheProduktivsystemezuüberführen.

Maschinelles Lernen nimmt gerade den Weg vomForschungsgegenstand zur Commodity, so Schwabe weiter imInterview. Und jeder Entwickler, der das Herz einesInformatikershat, sollteMaschinellesLernen in seinRepertoireaufnehmen, genau wie Mechanik und Elektrodynamik zumRepertoireeinesPhysikersgehören.

Anregungen und Grundlagen für den Einstieg ins MaschinelleLernensollIhnendiesesThemen-DossierandieHandgeben.Wirzeigen, wie Machine Learning funktioniert, präsentierenspannendeML-Projekte und klären in Experten-Interviews,wieman sich dem Thema nähern kann, und wohin die Reise derdenkendenMaschinegeht.

Page 5: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

VieleinspirierendeMomentebeiderLektürewünscht,

HartmutSchlosserRedakteurJAXenter

www.jaxenter.deTwitter:@JAXenter

FolgenderInhalterwartetSie:MaschinellesLernenmitJava:EineEinführung–ArtikelvonLarsSchwabeMachineLearningExperten-Check–SechsExpertenüberdieFaszinationanderlernendenMaschineTensorFlow: Der Weg des maschinellen Lernens – ArtikelvonBerndFondermann“Wir sehen Anzeichen dafür, dass Machine-Learning-Systeme eigenen kreativen Output liefern” – InterviewmitBerndFondermannKünstliche neuronale Netze: Ein Machine-Learning-BeispielmitNeuroph–ArtikelvonDr.ValentinSteinhauerMaschinelles Lernen: Vom Forschungsgegenstand zurCommodity–InterviewmitLarsSchwabeEineneigenenChatbotbauen–ArtikelvonRomanSchacherlundDanielSklenitzka“Wir werden Sprachinteraktion zwischen Mensch undMaschine bald als einen ganz normalen Prozess erleben” –InterviewmitInterviewmitProf.Dr.-Ing.DorotheaKolossa

Page 6: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

KünstlicheIntelligenz,MachineLearning,DeepLearning

MaschinellesLernenmitJava:EineEinführungExpertenfürMaschinellesLernensindgefragterdennje–spätestensseitAmazonspersonalisierterOnline-WerbungundSpracherkennungsdienstenwieSiri,GoogleNowoderCortana.Grundgenug,sichdasThemaineinemJAXenter-Dossieretwasgenauervorzunehmen.ZuBeginnführtLarsSchwabeindasThemaein:WiefunktioniertMachineLearningeigentlich,welcheFrameworkshelfenbeiderUmsetzung,wohingehtderTrendinSachenKünstlicherIntelligenz?vonLarsSchwabe

MaschinellesLernen:EineEinführungMan muss kein Prophet sein, um den Einzug von KünstlicherIntelligenz und maschinellem Lernen (ML) in unseren Alltagvorherzusagen. Wir nutzen sie bereits heute aktiv, z. B. dieSpracherkennung auf Mobiltelefonen, Spam-Filter oder dieGesichtserkennung bei der Verwaltung unserer Fotos. Oft sindwir auch imKontakt zuML-Systemen, ohne es zuwissen, etwa

Page 7: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

bei der personalisierten Online-Werbung. Und Chatbots sindvoraussichtlich(leider)nichtmehraufzuhalten.

FürdenNeu-undQuereinsteigermitEntwicklerhintergrund istML ein zunächst unübersichtliches Feld, weil es vieleverschiedene konzeptuelle, methodische und theoretischeAnsätzegibt.UndwasistmitdenoffenbarnotwendigenStatistik-und Mathematikkenntnissen? Die müssen bei Bedarf auchnachgerüstet oderaufgefrischtwerden. Ist dieEinstiegsbarrierefürEntwicklerdeshalbnichtvielzuhoch?

Nein, im Gegenteil. Entwickler spielen eine Schlüsselrolle beimÜberführen von ML-Systemen aus der Forschungs- undBasteleckeinProduktivsysteme,dieechteMehrwertefürNutzerbringen.

MaschinellesLernenmitJavaWie bei jeder Technologie bietet es sich an, zunächst ein sehreinfaches Systemzu verstehen. FürML ist dies das Perzeptron.EinPerzeptronisteineLernmaschine,diefüreineEingabexeinebinäre Ausgabe y liefert, und zwar durch Auswerten einerFunktion y=f(x). Die Eingaben repräsentierenObjekte, die es inzwei Klassen einzuteilen gilt. Ein gelerntes Perzeptron fürzweidimensionale Eingaben ist exemplarisch durch die Java-KlasseinListing1implementiert.

packageme.schwabe.examples.javamag;

publicclassPerceptron{

privatefinalstaticintDEFAULTDIM=2;

privatefinalfloatweights[];

publicPerceptron(){

this(DEFAULTDIM);

}

publicPerceptron(intdim){

this(newfloat[dim]);

}

publicPerceptron(float[]weights){

this.weights=weights;

}

Page 8: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

publicfloat[]getWeights(){returnweights;}

publicintgetDim(){returnweights.length;};

publicbooleanisPositive(float[]input)throws

IllegalArgumentException{

if(input.length!=getDim())

thrownewIllegalArgumentException("Dimensionality

mismatch.");

floatsum=0;

for(inti=0;i<input.length;i++){sum+=weights[i]*

input[i];}returnsum>0f;

}

publicbooleanlearn(floatlrate,float[]input,boolean

label){

booleandoLearning=isPositive(input)!=label;

if(doLearning){

floatsign=isPositive(input)?-1.0f:1.0f;

for(inti=0;i<input.length;i++){

weights[i]+=lrate*input[i]*sign;

}

normalizeWeightVector();

}

returndoLearning;

}

privatevoidnormalizeWeightVector(){

doublenorm=0f;

for(inti=0;i<weights.length;i++){

norm+=weights[i]*weights[i];

}

norm=Math.sqrt(norm);

for(inti=0;i<weights.length;i++){

weights[i]/=norm;

}

}

}

Listing1:EinPerzeptronalsJava-Klasse,inklusivedesLernens

Die Verwendung eines gelernten Perzeptrons wird durch dieJUnit-TestsinListing2demonstriert.

packageme.schwabe.examples.javamag;

importorg.junit.Test;

importstaticorg.junit.Assert.assertTrue;

Page 9: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

importstaticorg.junit.Assert.assertFalse;

publicclassPerceptronTest{

@Test

publicvoidperceptronShoudCorrectlyComputeOutput(){

Perceptronp=newPerceptron(newfloat[]{1.0f,0.0f}

);

assertTrue("Point1misclassified.",p.isPositive(new

float[]{0.5f,0.5f}));

assertFalse("Point2misclassified.",p.isPositive(new

float[]{-0.5f,0.5f}));

assertFalse("Point3misclassified.",p.isPositive(new

float[]{-500f,-500f}));

}

}

Listing2:BenutzeneinesgelerntenPerzeptrons

DerCodeinListing1nimmteineMultiplikationderParameterwimitdenEingabenxivor,bevorinAbhängigkeitdesVorzeichensdie binäre Ausgabe errechnet wird. Dies erscheint vielleichtetwas willkürlich, lässt sich aber geometrisch anschaulichinterpretieren,wieinAbbildung1gezeigt.

Das gelernte Perzeptron entscheidet eigentlich nur, ob einDatenpunktaufdereinenoderderanderenSeiteeinerGeradenliegt.WennwirmitmehralszweiDimensionenbeidenEingabenarbeiten, spricht man nicht mehr von Geraden, sondernallgemein von Hyperebenen, die durch die Parametervektor wdesgelerntenPerzeptronsdefiniertsind.Genauer:WennwirdieParameter(oftauchGewichtegenannt)alsVektorinterpretieren,stehtdieserVektorsenkrechtaufderHyperebene.ErinnerungenandieSchulmathematikkönnenhierhilfreichsein.

Page 10: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.1:GeometrischeInterpretationderPerzeptron-Entscheidungsfunktion.DerGewichtsvektorstehtsenkrechtaufderTrennungsebene.

DasLerneneinesPerzeptronsbestehtnundarin,Werte fürdenParametervektorwaufGrundlageeinesDatensatzesmittelseinesLernalgorithmus zu bestimmen. Ein Datensatz besteht hier ausEingabevektoren zusammen mit der Klassenzuordnung. FürjedenEingabevektoristalsobekannt,oberzuderzulernendenKlasse des Perzeptrons gehören soll odernicht.Dieses Szenariowird auch überwachtes Lernen genannt, weil für jedenEingabevektordieZielgrößebekanntist.

Der Code in Listing 3 zeigt, wie das Lernen mittels dessogenannten Perzeptron-Lernalgorithmus geschieht. Die KlassePerceptronTeacher wird mit einem Datensatz initialisiert. DerAufruf der Methode createPerceptron liefert dann ein fertiggelerntes und einsatzbereites Perzeptron zurück, das nun auchaufneueDatenangewendetwerdenkann.

packageme.schwabe.examples.javamag;

Page 11: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

publicclassPerceptronTeacher{

privatestaticfinalintMINPOINTS=3;

privatefinalfloat[][]inputs;

privatefinalboolean[]labels;

privatefinalstaticfloatLRATE=0.1f;

publicPerceptronTeacher(){

this(newfloat[][]{{0f,0f}},newboolean[]{true});

}

publicPerceptronTeacher(float[][]inputs,boolean[]labels)

{

if(inputs.length<MINPOINTS)thrownew

IllegalArgumentException("Weneedatleast"+MINPOINTS+"one

datapoint");this.inputs=inputs;this.labels=labels;}

publicintgetDim(){returninputs[0].length;}public

PerceptroncreatePerceptron(){Perceptronp=newPerceptron(new

float[]{1.0f,0.0f});intnoOfErrors=inputs.length;while

(noOfErrors>0){

noOfErrors=0;

for(inti=0;i<inputs.length;i++){

noOfErrors+=p.learn(LRATE,inputs[i],

labels[i])?1:0;

}

System.out.println(noOfErrors);

}

returnp;

}

}

...

packageme.schwabe.examples.javamag;

importorg.junit.Test;

publicclassPerceptronTeacherTest{

privatestaticfinalfloat[][]testInputs1={{1.0f,1.0f},

{1.0f,-1.0f},{-1.0f,1.0f},{-1.0f,-1.0f}};

privatestaticfinalboolean[]testLabels1={true,true,

false,false};

privatestaticfinalfloat[][]testInputs2={{1.0f,1.0f},

{1.0f,-1.0f},{-1.0f,1.0f},{-1.0f,-1.0f}};

privatestaticfinalboolean[]testLabels2={false,false,

true,true};

Page 12: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

@Test

publicvoidperceptronShoudLearn(){

PerceptronTeacherteacher1=new

PerceptronTeacher(testInputs1,testLabels1);

Perceptronp1=teacher1.createPerceptron();

PerceptronTeacherteacher2=new

PerceptronTeacher(testInputs2,testLabels2);

Perceptronp2=teacher2.createPerceptron();

}

}

Listing3:LerneneinesPerzeptrons

DieseseinfacheBeispielzeigtbereitsdiewesentlicheArchitekturvonML-Systemen. Ein gelerntesML-Modell (Klasse Perceptron)ist durch Parameter beschrieben (Perceptron.weights), derenWertedurcheinenLernalgorithmus (KlassePerceptronTeacher)aufBasiseinesDatensatzesbestimmtwerden.DasLernenkanninCloud-basiertenBackend-Systemengeschehen.DieSystemeinProduktion benötigen nur den Parametervektor w für denBetrieb.

KünstlicheneuronaleNetzeKünstliche neuronale Netze (Artificial Neural Networks, ANNs)sind eine konsequente Weiterentwicklung des Perzeptrons. Siebestehen aus mehreren künstlichen Neuronen, die meist inSchichtenorganisiertwerden.DieAusgabesignalevonNeuroneneiner Schicht sind die Eingabesignale von Neuronen in derfolgendenSchicht(Abb.2).

Page 13: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.2:ANNsmitmehrerenSchichtenundtypischeTransferfunktionen.

HateineinzelnesNeuronN freieParameter, dannhat einANNmitMNeuronenMxN freie Parameter.Während des Lernensgiltesnun,dieseMxNfreienParameterzubestimmen.

Und genau das übernimmt wieder ein Lernalgorithmus.Nachdem die Parameterwerte bestimmt sind, können diesepersistiert und für einen Produktiveinsatz als „gelerntes ANN“verteiltwerden,z.B.anGerätemitvielwenigerRechenpoweralses zum Lernen notwendig ist, wie eingebettete Systeme mitstromsparenden Prozessoren. Die Anwendung eines gelerntenANNs auf ein Eingabemuster ist dabei recht einfach: DieAusgaben der Neurone in der letzten (oder „obersten“) Schichtsind die Ausgabe des gesamten Netzes. Um sie zu berechnen,müssendieAusgabenderNeurone indervorgelagertenSchichtberechnetwerden,usw.

EinMeilensteinderANNswardieEntwicklungdessogenanntenBackpropagation-Algorithmus,derinvielenUpdate-SchrittendieParameterwerte eines ANNs für einen gegebenenTrainingsdatensatzanpasst.DieDetailsdiesesAlgorithmussollen

Page 14: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

uns hier nicht beschäftigen. Die Struktur des Backpropagation-Algorithmus ist aber ähnlich wie das Lernen beim Perzeptron:EinTrainingsdatensatzwirdDatenpunktfürDatenpunktiteriert,und die Parameter werden jeweils ein klein wenig angepasst(sieheKasten).

DetailsfürmathematischInteressierteundVorbelasteteDieAnwendungvonMLläuftoftdaraufhinaus,eineKostenfunktionEDfürdenDatensatzDaufzustellen,diedannmitOptimierungsalgorithmenminimiertwird.BeieinemRegressionsproblemseiderDatensatzalsMengevonNPaarengegeben,D={(x1,y1),(x2,y2),…,(xN,yN)}.Wobeixiundyi,1≤i≤N,hierderEinfachheithalberreelleZahlenseinsollen.

OftwirddannderquadratischeFehlerdefiniertalsED(w)=½∑1≤i≤N[f(xi;w)–yi]2,um

dieQualitätvonNetzwerkausgabenfürgegebeneEingabenzuquantifizieren.DieserFehleristeineFunktionderGewichtewimANN,wobeiweinVektorist.DieFunktionf(xi;w)berechnetdieAusgabedesANNsinAbhängigkeitderEingabexiundderGewichtewimANN.ZielistdasFindenvonGewichtenw,sodassderFehlerminimiertwird.

EinesolcheMinimierungwirdbeimBackpropagation-AlgorithmusmittelsGradientenabstiegvorgenommen,d.h.eswirddieAbleitungd/dwkderFehlerfunktionED(w)nacheinemGewichtwk(einEintraginw)berechnet.DannwerdendieGewichteineinemUpdate-SchrittunterVerwendungdesGradientenw‘(einVektorvondergleichenDimensionwiew)geändet:wneu=walt–αw‘.HieristαdieLernrate,d.h.eineZahlwiebeispielsweise0,01.WirdderFehlervoneinemUpdate-Schrittzumnächstewiedergrößer,hatmandasMinimumüberschritten.

HierkönntemandasLernenauchabbrechenunddasbisdahinermitteltewneualsdasgelernteANNverwenden.WennmandenGradientenfürANNsausrechnet,beidenendieNeuroneinSchichtenorganisiertsindundnurVerbindungenzunachfolgendenSchichtenaufbauen,ergibtsicheineAuswertereihenfolgevonAusdrücken,diemaninterpretierenkann,alsobsichdiekünstlichenNeuroneNachrichtenhin-undhersenden.DasProblemdabeiist,dassdasOptimierungsprobleminderRegelsehrvielelokaleMinimahatundmanbeimOptimierennichtweiß,obesnichtnochbessereWertevonwgibt.EinerechentechnischeSchwierigkeitistes,dassbeiANNsmitvielenSchichtenderGradientaufgrundderbeimAbleitenanzuwendendenKettenregel(diesführtzuProduktenmitvielenFaktoren)sehr,sehrkleinwerdenkann(oderauchsehr,sehrgroß)unddasANNdamitdannnichtmehrlernt.DiesesProblemhatteerstmalsSeppHochreiterinseinerInformatik-Diplomarbeitsauberformalisiertherausgearbeitet.Daswar1991.UndesistalswichtigeEinsichtnochimmerhochaktuell.MethodischeFortschrittemüssensichmitdiesemProblemauseinandersetzen.EskannnichtdurchbrachialeRechenpowergelöstwerden.

DeepLearning

Page 15: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Deep Learning steht inzwischen stellvertretend für modernesund leistungsfähiges ML. Unternehmen wie Microsoft, GoogleundFacebooksetzenaufDeepLearningundhabenhiermassivinvestiert.DieBekanntheitvonDeepLearningistgrößtenteilsaufdiesemassivenInvestitionenzurückzuführen.AberwasistDeepLearning? Überspitzt formuliert: Deep Learning ist der neueName für ANNs. Aber warum nennen wir es denn nichtweiterhin ANNs?NebenMarketing-Gründen ist eines nicht vonder Hand zu weisen: Deep Learning funktioniert! Es löst dasVersprechen der ANNs ein, aus komplexen Daten wie Sprach-,Text-, Bild- oder Videosignalen mittels LernalgorithmenStrukturenzuextrahieren,umsiebeispielsweisefürSprach-undObjekterkennungzunutzen.

DerGrunddafürist,dassDeepLearningineinigenvermeintlichnebensächlichenDetailsüberdieherkömmlichePraxismitANNshinausgeht, unter anderem die Nutzung andererTransferfunktionen und einige Heuristiken beim Lernen. EinganzoffensichtlicherGrundist jedochschwerzuübersehen. ImVergleichzuden80erund90erJahrendes letztenJahrhundertskönnen wir beim Lernen inzwischen sehr große DatenmengenundvielmehrRechenpowernutzen.

Derzeit gibt es mehrere leistungsfähige Bibliotheken undFrameworks, um Deep Learning auf Daten anzuwenden. ZunennensindhieraufjedenFallTensorFlow,Theano,Caffe,CNTKund DL4J. Zwar gibt es für die JVM einige relevante ML-Frameworks, mit jeweils eignen und unterschiedlichenAbstraktionen,wiedieaufSparkbasierendenspark.ml,sowiediealten Schlachtrösser Weka und Mallet. Bis auf DL4J setzt aberkeiner der anderen Deep-Learning-Kandidaten auf die JVM alsPlattform. Stattdessen wird auf native Implementierungen undPythonzumRapidPrototypinggesetzt.

Um diese Frameworks sinnvoll zu vergleichen, hängt es davonab,wasgenaueigentlicheinProjekterreichensoll.AufjedenFallwird aber die Unterstützung von Grafik-Prozessoren und dasLernenaufClusterneinKriteriumaufjederChecklistesein.WerübermehrDateniterierenundmehrNetzelernenkann,hatganzklar einen Vorteil. Auch die Einbindung in existierendeHadoop/Spark-Infrastrukturen kann ein Thema sein, weil inUnternehmeninzwischenoftinHadoop-basiertenDataLakesdie

Page 16: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Datenschätze liegen,dieesmittelsDeepLearningzuhebengilt.Genau dies stellt DL4J als Alleinstellungsmerkmal heraus. Fürden Java-Entwickler kann es uneingeschränkt zumindest alserstenSchrittindieWeltdesDeepLearningsempfohlenwerden.

LarsSchwabehatanderTUBerlininInformatikpromoviert.ErleitetderzeitdasDataInsightLabimTechnologyInnovationCenterderLufthansaIndustrySolutions,woDataScientistsundML-ExpertenfürIndustrieunternehmenneuedatengetriebeneLösungen

entwickeln.

Page 17: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

SechsExpertenüberdieFaszinationanderlernendenMaschine

MachineLearningExperten-Check:6TippsfürdenEinstiegindasmaschinelleLernenMachineLearningistdieneueFormeldafür,wasmaneinmalKünstlicheIntelligenzgenannthat.InunseremThemen-DossierspürenwirdemneuenTrendnachundstellenaktuelleML-Lösungenvor,darunterdieNumenta-PlattformfürintelligentesComputing,dieMachineLearningLibrarySparkMLlib,dasNatural-Language-Processing-ProjektCortical.io,dasML-FrameworkApacheMahout,dasBilderkennungs-APICognitiveJunddasData-Mining-SystemADAMS.VorabhabenwirdieLeiterderProjektegebeten,unsihreFaszinationfürintelligenteMaschinengenauerzuerklärenundTippsfürdenEinstiegindieML-Weltzugeben.vonKyprianiSinaris

JAXenter:WasistsofaszinierendammaschinellenLernen?

FranciscoWebber:Faszinierendistfürmich,jedenTagaufsNeuefestzustellen,wieelaboriertdieMaschine“Gehirn”ist.Trotzallerintellektuellen und finanziellen Anstrengungen sind wir nochweitdavonentfernt,dieIntelligenzeinesGehirnsreproduzierenzukönnen.

IanKelly:IchhabemichseitmeinemStudiummitmaschinellemLernen beschäftigt und damit gearbeitet. Was mich daranfasziniert,istdieevolutionäreGeschwindigkeit,mitdersichML-Toolsweiterentwickeln.InmeinenAugenistdasimMomentdiespannendste Disziplin der Computerwissenschaften. ML-Technologien werden Teil der Struktur unseres Alltagslebenswerden, was unheimlich aufregend ist, aber auch nervig seinkann.KomplexeRechenprobleme,die führendeWissenschaftlerseitJahrzehntenbeschäftigthaben,werdennunmitLeichtigkeitdurch die Verwendung von ML- und AI-Ansätzen gelöst. Es

Page 18: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

scheintkeineGrenzenmehrzugeben.

Wirsindnochweitdavonentfernt,dieIntelligenzeinesGehirnsreproduzierenzukönnen.

XiangruiMeng:Vieleglauben,dassesversteckteSchätze inBig-Data gibt. Maschinelles Lernen lässt sie uns per Reflexionentdecken.

MattTaylor:DasmaschinelleLernen tendiertdazu, sichaufdieEntwicklung von Lösungen für sehr spezifische Probleme zukonzentrieren.DazusindExpertennotwendig,einegroßeMengegekennzeichneterDatenundhochgradigabgestimmteLösungen.DasSpannendeanmaschinellerIntelligenzist,dasssienäherandie allgemeine Intelligenz des Menschen herankommt. Siebenötigt keine Millionen von Datenpunkten um zu lernen,genausowiedasmenschlicheGehirnausnurwenigenBeispielenlernt. Eine intelligente Maschine würde sich schnell auf neueInformationeneinstellen,ohnedafürofflinegenommenundneuprogrammiert werden zu müssen. Es gibt so viele möglicheAnwendungen für intelligente Maschinen. Denkbar istbeispielsweisedieÜberwachungjederArtvonIoT-Sensoren,diemedizinischeDiagnostikundBehandlungsowiedieErforschungherausfordernderIdeenundOrte.

Peter Reutemann: Zerstörungsfreie Methoden wie NIR/MIRerlaubenes,dieAnzahlderLabortestsfürProbenzureduzieren,wasdieUmweltentlastet.

PatFerrel:Wasistdarannichtfaszinierend?DieMathematik,diegroßeMenge anDaten, Dinge zu tun, die vorher nichtmöglichwaren.EinigeApplikationeninEmpfehlungssystemensindnichtweit davon entfernt, die Gedanken einer Person zu lesen, zuwissen, was sie tun werden, bevor sie es tun. So etwasfunktioniertnichtimmer,aberwennesfunktioniert,dannistesmanchmal auch gruselig. Außerdem ist es spannend in einemGebietzuarbeiten,dasetwaaufdemStandist,wiedieForschungvor zwanzig Jahren. Empfehlungssysteme müssen genausoentdecktwerdenwie Suchmaschinen. Stellen Sie sich vor:Werwürde Amazon benutzen, wenn es nicht seine üblichenEmpfehlungen machen würde? Sogar ihre Suche istpersonalisiert, sie nennen es “Behavioral Search.” Der Rest der

Page 19: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Weltholtjetztauf.WennUnternehmenausBacksteinundMörtelüberleben wollen, müssen sie Online-Unternehmen, technischeUnternehmenwerden–unddamitmeineichnichtnureinWeb-Unternehmen. Ich berate auch Firmen, um sich dafür fit zumachen. Unternehmen müssen sich weiterentwickeln oder sieverlierensichirgendwoindiesemWandel.

MattTayloristdasSprachrohrderOpen-Source-CommunityderNumenta-PlattformfürintelligentesComputing.EinengroßenTeilseinerZeitverbringtermitdemManagenderNuPICOSCommunity.

XiangruiMengistTechnicalLeadvonSparkMLlibundMitglieddesApacheSparkProjektmanagement-Ausschusses(PMC).

PatFerrelistimApacheMahoutProjectManagementCommitteeundbautSystemefürdasMaschinelleLernenfürvieleApache-Big-Data-Projekte.EristaußerdemCommittervonApachePredictionIO.

FranciscoWebberistErfinderderSemantic-Folding-TheorieundhatdasStartupCortical.iomitgegründet.

IanKellyistderErfindervonCognitiveJundhatunteranderemmitSAP,Microsoft,VolvoundOraclegearbeitet.

PeterReutemannistLeadDeveloperdesProjektesADAMS,AdvancedDataminingandMachinelearningSystem.

JAXenter:Solltenwirunsfürchten,dassMaschinenbalddieMachtübernehmenwerden?

Matt Taylor: Der Teil des Gehirns, den wir nachbilden, ist der

Page 20: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Neocortex, also das “neue Gehirn” im Gegensatz zum “altenGehirn”.DasalteGehirnistderTeildesMenschen,derWünscheundBedürfnissehat,derMachthabenwillundwütendwerdenkann.Wirmodellieren ausschließlich den analytischen Teil desGehirns.SolangewirunsereComputer-Gehirnealsonichtdaraufprogrammieren,WünscheundBedürfnissezuhaben,dannkannessieeinfachnichthaben.Wirhoffendarauf,derMenschheitinderZwischenzeitdurchbessereanalytischeMöglichkeiteninderDatenverarbeitung viele neue Optionen bieten zu können, umdenZustandderMenschenzuverbessern.

Xiangrui Meng: Womöglich sollten wir uns fürchten, abervielleicht istdasetwas,worüberichmir inmeinemLebennochkeineSorgenmachenmuss.

Francisco Webber: Macht ist ein Begriff, der im Kontext vonMaschinen keinen Sinn hat. Macht hat nur für MenschenBedeutung. Ichdenke,dasshinter jederAI,seisieauchnochsoweit entwickelt, ein Mensch oder zumindest seine Interessenstehen werden. Und Menschen können bekanntlich sehrgefährlichsein.

Pat Ferrel: Natürlich werden sie das. Ich kann Skynet und dieZylonskaumerwarten,weilwirdieGötter seinwerden,die sieerschaffenhaben.

Ian Kelly: Ich glaube, dass die Frage nicht ist, ob das passiert,sondern nur,wann es soweit ist.Maschinen arbeiten auf eineanalytische Weise und betrachten ausschließlich die ihnenvorliegenden Daten, um fundierte Entscheidungen zu treffen.Wenn die Zeit gekommen ist, zu der Maschinen Datensätzeauswerten,dieunsMenschensozeigenwiewirwirklichsind,istdie einzig logische Konsequenz, dass sie die Kontrolleübernehmen und diese “Anomalie” beseitigen. Daswäre nichtsanderes,alswennheuteeinmodernesAutodenFahrerübergehtundanhält,bevoreszueinemUnfallkommt–nurineinemvielgrößeren Maßstab und mit entgegengesetzten Ergebnissen fürdieMenschheit.

VervollständigenSiediefolgendenSätze:In50JahrenwirdmaschinellesLernen…

MattTaylor:…allgegenwärtigsein.

Page 21: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

PeterReutemann:…nichtmehrausdemLebenwegzudenkensein,auchwennwirgarnichtmehrwahrnehmenwerden,dassalldiekleinenHelferleinMachineLearningbenutzen.

IanKelly:…überallinalltäglichenAufgaben,EreignissenundInteraktionenseinundunsgroßeMachtundgroßesPotentialgeben.

XiangruiMeng:…dieseFragenbeantwortenkönnen.

FranciscoWebber:…zumAlltaggehören.

PatFerrel:…überalleingebettetsein:InjederSache,jederApplikationundjedemService,dereineCPUnutzt.

WennMaschinenintelligenterwerdenalsMenschen,dann…

PeterReutemann:…könnteendlicheinmaleinintelligenterDiskursdarüberstattfinden,wiedieendlichenRessourcenaufderErdegehandhabtwerdenkönnen.

IanKelly:…müssenwiranunserendiplomatischenFähigkeitenarbeitenunddaraufhoffen,dassdieMaschinenunsnichtüberflüssigmachen.

MattTaylor:…wirddieMenschheitdiegrößtenundschnellstentechnologischenFortschritteinihrerGeschichteerleben.

FranciscoWebber:…werdensiediebiologischenGehirnemassiverweitern.

PatFerrel:…lasseichsiemeineBugsfixen.

ImVergleichzueinemMenschenwirdeineMaschineniemals…

IanKelly:…Selbstzweifelhaben,sichdarübersorgen,wasanderedenkenoderEntscheidungenaufgrundvonEmotionenwieNeid,HabgieroderGiertreffen.

PeterReutemann:…warmumsHerzwerden,wenndasLiedim(futuristischenÄquivalentvom)Radiospielt,beidemderersteKussausgetauschtwurde.

FranciscoWebber:…sichunvorhersehbarverhalten.

PatFerrel:…dieFreudeaneinergesundenDarmtätigkeitspüren.Oderalternativ:SiewirdfürVerbesserungennieaufeinebiologischeEvolutionvertrauenmüssen.

MattTaylor:…emotionalsein.

OhnedasmaschinelleLernenwirddieMenschheitniemalsinderLagesein,…

PeterReutemann:…dieHerausforderungendes21.Jahrhundertszubewältigen.

IanKelly:…folgendeProblemezulösen:DiegroßenHerausforderungen,denenwirheutegegenüberstehen,sowiedieDiagnostikundHeilungvonKrankheitenoderdieReduzierungvonUmweltzerstörung;einigealltäglicheProblemewieöffentlicherNahverkehr,dersichwirklichandenFahrplanhältodereineakkurateWettervorhersage,dieWetterwechselaufdieSekundegenauvorhersieht.

FranciscoWebber:…sichtechnologischweiterzuentwickeln.

PatFerrel:…seinenatürlichenGrenzendurchdasErweiterndesbiologischenLernensmitmaschinellemLernenzuüberwinden.

MattTaylor:…denMarszubesiedeln.

JAXenter:WelchedreiBlogs/Bücher/Artikel/FilmeempfehlenSie

Page 22: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

jedem,dersichmitMachineLearningbeschäftigenmöchte?

Ian Kelly: Ich halte es für sehr empfehlenswert, die Posts undPaperzulesen,diedieLeutevondenProjektenOxford&CortanaveröffentlichenundaucheinenBlickaufdiePaperzuDeepMindzuwerfen,weilsieunseinenEinblickindieneustenTrendsderIndustrie geben. Aus einer cineastischen Perspektive halte ichiRobot für einen Film, der leicht wahr werden könnte –tatsächlich sehen wir die ersten Ansätze dieser Entwicklungschonheute.

Xiangrui Meng: Der Film Money Ball, das Buch PaternRecognitionandMachineLearningunddasBuchTheElementsofStatisticalLearning.

Matt Taylor: Wir arbeiten nicht mit maschinellem Lernen,sondernanmaschinellerIntelligenz.MeineAntwortenbeziehensichalsodarauf.ZuerstsolltemanOnIntelligencevonunseremMitbegründerJeffHawkinslesen.DasistdasBuch,dasich2006gelesen habe und das mein Interesse daran geweckt hat, wieIntelligenz funktioniert und wie wir sie in Softwareimplementieren können. Und da du mich gefragt hast, ob dieMaschinen die Weltherrschaft übernehmen werden, empfehleich ein interessantes fiktionales Beispiel einer Utopie, die zeigt,wie ich mir eine Zukunft vorstellen würde, in der es wirklichintelligenteMaschinengibt:dieCulture-SerievonIainM.Banks.AlsdritteshatmirauseinembestimmtenGrundimmerdieHAL-9000-Repräsentationmaschineller Intelligenz aus 2001: OdysseeimWeltraumgefallen.HALwurde“geboren”undhatalles,waser wusste, mit der Zeit gelernt, genau wie ein Mensch. HALerwähnt im Film, dass sein Schöpfer ihm ein Lied beigebrachthat, als er jung war. Ich glaube, dass wir genau diese Art vonIntelligenz irgendwann mit HTM erzeugen werden – eineIntelligenz,die zurWelt kommt, ohneetwas zuwissen,wie einleeres Gehirn. Sie muss mit der Welt interagieren, um zuverstehen,worumesgeht.

Ichglaube,dasswirgenaudieseArtvonIntelligenzerzeugenwerden–eineIntelligenz,diezurWeltkommt,ohneetwaszuwissen,wieeinleeresGehirn.

Page 23: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Peter Reutemann: Ich empfehle Data Mining vonWitten et al.,Machine Learning von Tom Mitchell und Artificial IntelligencevonRusselandNorvig.

FranciscoWebber:DasBuchOnIntelligencevonJeffHawkinsisteine Pflichtlektüre für jeden, der verstehen will, wie unserGehirn funktioniert. Es hat mich zur Semantic-Folding-Theorieinspiriert. Die MIT Technologie Review ist eine Quelle für gutrecherchierte Artikel übermaschinelles Lernen und KünstlicheIntelligenz. Und: Andrew Ng’s Self-Taught Learning andUnsupervisedFeaturelecture.

Pat Ferrel: Zwei Mahout-Committer haben ein Buch über dasEntwerfenvonverteiltenAlgorithmengeschrieben,daseinguterStart ist: Apache Mahout: Beyond MapReduce. Für eine eherintuitive Diskussion einzelner Themen empfehle ich TedDunningsBücherderpraktischenMachine-Learning-Serie.Erhatbeispielsweise ein Buch namens Innovations inRecommendationsverfasst.

Links&LiteraturML-SteckbriefHTM/Numenta:https://jaxenter.de/machine-intelligence-htm-43774

ML-SteckbriefSparkMLlib:https://jaxenter.de/machine-learning-library-mllib-43688

ML-SteckbriefApacheMahout:https://jaxenter.de/machine-learning-apache-mahout-43711

ML-SteckbriefCortical.io:https://jaxenter.de/machine-learning-mit-cortical-io-semantische-inhalte-erfassen-45080

ML-SteckbriefCognitiveJ:https://jaxenter.de/machine-learning-beispiel-cognitivej-43772

ML-SteckbriefADAMS:https://jaxenter.de/adams-machine-learning-fuer-besseren-workflow-44924

Page 24: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

VerteiltesLernenmitTensorFlow

TensorFlow:DerWegdesmaschinellenLernensvonBerndFondermann

MitTensorFlowhatGoogleeinToolfürverteilteSysteme,dieBasisderfürmaschinellesLernensowichtigenneuronalenNetze,indieOpen-Source-Weltentlassen.EsisteinweiteresZeichen,dassmaschinellesLernendenSchrittvondenListenderTechnologientrendsindieWirklichkeitmacht.

Zwei Disziplinen waren lange Zeit die Außenseiter in ihrerDomäne: Inder Informatikdie „Künstliche Intelligenz“ (KI),dasaufgekratzteKindmitdenFlausenimKopf,dasamEndenichtszustandebrachte.InderMathematikdieStochastikundStatistik,missverstanden als per Definition ungenaue, mit RestfehlernbehafteteunddamitminderwertigeBetrachtungvonZahlen. Inden letzten Jahrzehnten hat in der IT stattdessen der konkrete,hochgenaue, vermeintlich exakte Blick auf die Weltvorgeherrscht.Unshat interessiert,wievielZeilengenau inderDatenbanktabelle sind und exakt wie viele Kunden welchesProduktgekaufthaben.Kurz:EswardieSicht,dieeineBankaufdieWelthat.

Page 25: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Dann trat Amazon auf den Plan und machte sich MachineLearningzunutze,ummiralsKundenneueDingezuempfehlen,dieandereKundenmitähnlichenWarenkörbenwiedemmeinenbereitsgekaufthatten.Unddabeiwaresnichtentscheidend,dassdieseKunden sich exakt genausoverhaltenwie ich, sondern soähnlich wie möglich, mit einer Toleranz. Machine Learningfunktioniert mit Näherungen, mit Häufungen, mitFehlertoleranzen,alsomitStochastikundStatistik.Mathematischwar man damit zu neuen Ufern aufgebrochen, algorithmischaber noch nicht. Jede Machine-Learning-Anwendung brauchteseine eigenenVerfahrenund Implementierungenund ist damitheute mehr als damals ein recht unübersichtlicher und Know-how-intensiverBereichderSoftwareentwicklung.

MachineLearninglöstnichtalleProblemeManche Problemstellung lässt sich mit Machine Learning nurmehr schlecht als recht verwirklichen,wie Bilderkennung oderdas Verstehen gesprochener Sprache, zumindest nicht soweit,dass man den gewünschten Nutzen daraus zieht. BeispielSprache: Die klassischen Verfahren wie HMM (Hidden MarkovModels) erlauben das Erkennen von Phonemen, also denGrundlauten, aus denen gesprochene Sprache besteht.Statistische Häufigkeiten von aufeinanderfolgenden PhonemenweisendenComputeraufSilbenundWörterhin.Dochmancheähnlich- oder sogar gleichklingende Wörter sind auf derLautebene nur schlecht, also mit großer Fehlerhäufigkeit,auseinanderzuhalten.WirMenschenschaffendasmeist,weilwirgleichzeitig auf einer höheren Ebene durch den Wort- undSatzzusammenhangoderdenKontexteinerganzenUnterhaltungVerständnisherstellenundMehrdeutigkeitenausderLautebeneauflösen können. Doch für diese Ebenen müssen wiederumandere Machine-Learning-Verfahren zum Einsatz kommen. Espasstallesnichtrechtzusammen.

AusneuronalenNetzenentwickeltsichDeepLearningAndieserStelletrittdieKIinFormvonneuronalenNetzen(NN)aufdenPlan.NeuronaleNetzeorientierensichander–teilweisenoch nicht vollständig verstandenen – Funktionsweise desmenschlichenGehirns.DortsindUnmengenvonKnotenpunkten,die Neuronen, mit ihren Nachbarn über Leitungen, den

Page 26: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Synapsen, verbunden. Jedes Neuron bekommt über mehrereSynapsen elektrische Eingangssignale, die es zu einemAusgangssignal verrechnet und an die angeschlossenenNeuronenweiterleitet.

LangeZeithabenneuronaleNetzenichtbesseralsspezialisierteklassischeVerfahrenfunktioniert.BeistatistischenVerfahrenistdieEffektivitäthöherjemehrEingangsdatenmanhat.Fälltmanunter die eine kritische Grenze, funktionieren sie nicht mehr.Neuronale Netze müssen groß sein, um große Eingabenverarbeitenzukönnen.DochRechenressourcenfürStatistikundneuronaleNetze sindheute billiger denn je jederzeit zu haben.DamitkommendieehemaligenAußenseiterwiederinsSpiel.

Heutige neuronale Netze haben einen weiteren Vorteil: Siekönnen in Reihe hintereinandergeschaltet werden und damitverschiedenen Ebenen der Wahrnehmung und des Verstehensabbilden. Beschäftigt sich die erste Ebene eines NNs bei derBilderkennung mit den einzelnen Pixeln und deren Helligkeitund Farbe, so kann die nächste Ebene die Ausgabe der erstenEbene zumErkennenvonLinien,Kanten, FlächenoderKurvenverwenden. Mit jedem Schritt wird also die vorherigeInformation abstrahiert, und aus Linien werden geometrischeGebildeunddarauswiederumGesichter– imInternetnatürlichbevorzugt von Katzen. Für die Anwendung solchermehrschichtigen neuronalen Netze hat sich der Begriff DeepLearningetabliert.

IneinerUnterhaltungstehenaufeinanderfolgendeSätzeineinemZusammenhang. Informationen referenzieren früher Gesagtesund manchmal auch Dinge, die erst später gesagt werden: „Erkam auf mich zu. Er war klein, hieß Felix und bellte laut.“ Indiesen beiden Sätzenwird erst am Ende aufgelöst, dass es sichvermutlich um einen Hund handelt. Folglich wandelt sichnachträglichunserVerständnisvon „Erkamaufmich zu.“.DasVerstehen von Konversation steht imMittelpunkt von digitalenAssistentenwie Apples Siri, Cortana vonMicrosoft oder GoogleNow.DeepLearningistdieBasisfürdieseSysteme,dieeinerechthoheAbstraktionerreichenmüssen.

DeepLearningbrauchtverteilteSysteme:dieGeburtvonTensorFlow

Page 27: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Deep Learning funktioniert umso besser, je mehr Daten zumLerneninsneuronaleNetzeingespeistwerden.Ausentsprechendvielen künstlichen Neuronen und Synapsen muss dieses Netzdann bestehen. Zu viele, um auf einen einzelnen Rechner zupassen. Es muss also ein verteiltes System her. Open-Source-Projektewie Theano sind länger etabliert, aber ihnen fehlt dieMöglichkeitzurVerteilung.GooglehatzudiesemZweckseit2011ein Framework namens DistBelief (Dean, Jeffrey et al.: „LargeScaleDistributedDeepNetworks“)entwickelt.

Der Mehrzwecknachfolger von DistBelief ist nun das ProjektTensorFlow, das von Google im Quelltext auf GitHubveröffentlicht wurde. Es löst Google-intern DistBelief nach undnachabundwirddortüberalleProduktsparteneingesetzt,seiesSearch,AdWords,YouTubeoderGmail.

TensorFlow erlaubt es, beliebige neuronale Netze durchgerichtete zyklenfreie Graphen zu repräsentieren. Die KantenbildenEingabeundAusgabedereinzelnenRechenschritteab,dieKnoten die Verarbeitung aller Eingaben zur Ausgabe. EinProgramm, das auf TensorFlow basiert, muss einen solchenGraphen aufbauen. Dieser ist anwendungsspezifisch und hängtvonderArtdesInputsab.InnerhalbvonTensorFlowwerdendieverarbeiteten Daten als multidimensionale Arrays gespeichert.SolcheGebildefasstdieMathematikunterdemBegriff„Tensor“zusammen. Um Input zu erzeugen, lässt sich beispielsweise diegesprochene Sprache über Sampling, also dem Abgreifen vonKlangwerten in kurzen Abständen, in einen Eingangsvektor(Tensor 1. Ordnung) überführen, ein Schwarz-Weiß-Bildausschnitt als Pixelmatrix (Tensor 2. Ordnung) oder einFarbbild als drei solcher Pixelmatrizen, mit den Komponentenrot, grün und blau (Tensor 3. Ordnung). Tensoren sindinsbesondere interessant, weil Grafikkarten darauf optimiertsind, sehr schnell unglaublich viele Berechnungen auf ihnendurchführenzukönnen.Insofernistesnichtverwunderlich,dassTensorFlowGPU-ComputingunterstütztunddavoninbesondererWeiseprofitiert.

IstdergewünschteGraphaufgebaut,so isterselbstverständlichkeineswegs ohne Weiteres in der Lage, Bilderkennung oderÄhnliches durchzuführen. Auf seine Aufgabe muss er zuersttrainiert werden. Die Trainingsdaten füttert man ihm in

Page 28: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Iterationen immer wieder zu und verändert dabei GewichteinnerhalbdesGraphen,diedenOutputsoverändern,dassdiesersich dem erwarteten Ausgabewert annähert. Die richtigeStrategie bei derAnnäherung an den richtigenOutput ist einerder wichtigen Durchbrüche der letzten Jahre. Auch hier spieltStochastikeinewichtigeRolle.

Außerdem nimmt man in regelmäßigen Abständen separateTestdatenher,anhandderermanüberprüft,obdasTrainingdesneuronalen Netzes auch für beliebige Inputdaten wirkungsvollwar.VerbessertsichdasErgebnisaufdenTestdatennichtmehr,beendet man das Training. Die Gewichte sind der Zustand desGraphen und werden natürlich – neben seiner Struktur –beibehalten,sobalddasneuronaleNetzgutfunktioniert.

DiebesondereLeistungvonTensorFlowbestehtdarin,denGraphdes neuronalen Netzwerks über Rechnergrenzen hinwegabzubildenunddarauf effizient zu rechnen.Hier leistetGooglePionierarbeit. Aber die Suchmaschinenfirma ausKalifornien isthiernichtalleine. ImuniversitärenUmfeldentstandSINGA,dasmittlerweile als Inkubatorprojekt bei der Apache SoftwareFoundation gelandet ist. Andere Firmen wie Facebook undAmazon haben eigene Entwicklungen von Deep-Learning-Systemen.

Da die Knoten eines Graphen über ihre Verbindungskantenmiteinander kommunizieren, ist es im TensorFlow-Verbundnotwendig, ständig über das Netzwerk Informationauszutauschen. Diese Problemstellung eines verteilten Systemsbeherrscht TensorFlow laut Google maßgeschneidert fürneuronale Netze. Hauseigene Methoden wie MapReduce undandere haben in diesem Fall nicht so gut funktioniert. DamitrechtfertigtTensorFlowseineExistenz.

FazitDeep-Learning-NetzwerkestehenheutenochamAnfang.Siesindjedoch bereits teilweise in der Lage, ohne Training, alsoselbsttätig und ohne Aufsicht zu lernen. Es lassen sichbeeindruckende und teilweise auch verstörende Ergebnisseerzielen,dieüberdasreineErkennenhinausindenBereichderErzeugungvonneuenInformationenvordringen.EinBeispielistdasHinzufügenoderEntfernenvonBrillenausGesichternoder

Page 29: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

dasGenerierenvonSchlafzimmerbildern.

Mit Theano oder TensorFlow (beide Python-basiert) und SINGA(C++)wirdDeepLearningimmermehrProgrammiererneinfachzugänglich und kann in den nächsten Jahren viele Felder desMachineLearningsdominieren.DamitwerdenKIundStochastikendgültigganzobenbeidenwichtigenTechnologienstehen.

BerndFondermann(mailto:[email protected])istfreiberuflicherSoftwarearchitektundConsultantinFrankfurta.M.ErhateineSchwächefürverteilteSystemeundDatenspeicher,dieohneSQLabgefragt

werdenkönnen.AlsMemberderApacheSoftwareFoundationversuchter,mitderVielzahlderIncubator-Projektedortschrittzuhalten.

Page 30: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

BerndFondermannimInterview

„WirsehenAnzeichendafür,dassMachine-Learning-SystemeeigenenkreativenOutputliefern“DieKünstlicheIntelligenzhateinstvielversprochen,aberweniggehalten.NunschicktsichdieBewegungunterdemBannerdesMachineLearning/DeepLearningmitneuenAnsätzenan,Maschinenzuintelligenten,lernendenMaschinenzumachen.ImExperten-InterviewhabenwirBerndFondermanngefragt,wodieUnterschiedezwischenKIundDeepLearningliegen,welcheRolleTensorFlowimML-Kontextspielt,undwasnochfehlt,umwirklichinneueBereichevorzustoßen.

KI–dasaufgekratzteKindmitdenFlausenimKopfJAXenter:DieBewegungder„KünstlichenIntelligenz“istinden50ernmitgroßenVersprechungengestartet–dochspätestensinden90ernmachtesicheinegewisseErnüchterungbreit,dawenigederVersprecheneingehaltenwurden.DubeschreibstdieKIindeinemArtikelTensorFlow:DerWegdesmaschinellenLernensgarals„dasaufgekratzteKindmitdenFlausenimKopf,dasamEndenichtszustandebrachte.“Warumbrachteesdenneigentlichnichtszustande?

BerndFondermann:DaspassendeStichwortistwohl„schlechtesErwartungsmanagement“.DerName„KünstlicheIntelligenz“hatIllusionengeweckt,diedamalsnichtzuerfüllenwaren.UnddasallesineinerZeit,alsPCsnochexotische,schwerzubediendendeMaschinen waren und Mobiltelefon oder RasperryPi sichniemand vorstellen konnte. Auch die hochtrabendenAnkündigungendesimJanuarverstorbenenKI-ForschersMarvinMinsky haben dazu beigetragen. Ich habs eher mit dem altenBerliner JosephWeizenbaumgehalten (Buchtipp:DieMachtderComputer und die Ohnmacht der Vernunft), der ebenfalls wieMinskyamMITgearbeitethatundetwaszurückhaltenderwar.

Page 31: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

DerName„KünstlicheIntelligenz“hatIllusionengeweckt,dienichtzuerfüllenwaren.

DerBegriff„Intelligenz“waralsounglücklichgewählt,vielleichtwäre „Kognition“, also der Prozess des Verstehens, bessergewesen. Jeder versteht unter „Intelligenz“ etwas anderes. Undwennman dasmal aufdröselt, dann besteht Kognition u.a. ausWahrnehmung, Lernen, Orientierung und Problemlösen, abereben auch aus Planen, Kreativität, Glauben und dem Willen.SoweitwarendieseSystemlangenicht.

JAXenter:NunwurdeKIdurchDeep-Learning-Systemeergänzt.WogenauliegtderUnterschied?

BerndFondermann:Manweißheutevielbesseralsdamals,wieKognition im Menschen eigentlich abläuft. Also kann man dasauchnachbilden.WennderMenscheinBildsieht,dannwerdenmehrereStufendesVerstehenshintereinanderdurchlaufen,jedeStufebekommtalsEingabedieAusgabedervorhergenden.DafürbrauchtmansehrvielRechenkapazität.DiehabenwiringroßerMenge bei uns im Kopf in Form der Neuronen und Synapsen.Aber es gibt eben seit einigen Jahren auch Grafikkarten mithundertenundtausendenvonRechenkernen.UnddarauflaufendieGehirn-NachbautenvonDeep-Learningbesonderseffektiv.

„KreativeMaschinenJAXenter:DuschreibstindeinemArtikel,eslassensichmitDeep-Learning-Systemenbeeindruckende,teilweiseaberauchverstörendeErgebnisseerzielen.KannstdueinigeBeispielenennen?

Bernd Fondermann: Eigentlich will man dem Neuronalen Netzein Bild geben und bekommt als Antwort zumBeipiel: „Katze!“WennmanmitdiesenSystemenabereinbisschenspielt,nimmtman den Output der Zwischenergebnisse und steckt sie vornewieder rein. Man fängt mit einem unschuldigen Bild desWolkenhimmels an, und mit jedem Durchlauf formen sichStrukturen aus, die dasNeuronaleNetz zu erkennen glaubt. Soals läge man auf einer Wiese und erkenne in den Wolkenirgendwelche Tiere (Artikel „DeepDream“ in Wikipedia und„Inceptionism:GoingDeeperintoNeuralNetworks“).

Page 32: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

WirsehendieAnzeichendafür,dassMachine-Learning-Systemelangsameigenen„kreativen“Outputliefern.

EinanderesExperimentläßteinneuronalesNetz,welchemmanBilder von Schlafzimmern gefüttert hat, „kreativ“ sein, indemmanesBildervon„ausgedachten“Schlafzimmernerzeugenläßt.EtwasanschaulicheristdasBeispiel,woeinneuronalesNetzmitPorträtbildernvonMännernmitsowieohneBrillegefüttertwird.Anschließend istdasSystem inderLage,FrauengesichterneineBrille hinzuzufügen („Unsupervised Representation LearningwithDeepConvolutionalGenerativeAdversialNetworks“).

ÄhnlichgelagertsinddiecomputergeneriertenGeräusche,diesogutzueinemaudio-losenVideogeneriertwerden,dassMenschendenUnterschiednichterkennen(„Artificialintelligenceproducesrealisticsoundsthatfoolhumans“).

Das heißt, wir sehen die Anzeichen dafür, dass solche Systemelangsam eigenen „kreativen“ Output liefern, statt wie bisherimmer nur unsere naiven Fragen zu beantworten, wie: WaserkennstDuaufdiesemBild?

JAXenter:WelcheRollespieltTensorFlowimBereichDeepLearning?WelcheLückeschließtesausdeinerSicht?

BerndFondermann: AlsOpen-Source-Projekt liefert TensorFlowein für jeden Entwickler barrierefreies Framework, um selberDeepLearningauszuprobieren.Manwürdevielleicht indiesemBereich eher Hürden erwarten wie Closed Source, Lizenz- undPatentkosten.

TensorFlowbettet sichmit seinemPython-Frontend sehr gut indieMachine-Learning-undData-Analysis-Communityein.Eshatden besonderen Vorteil, sowohl auf CPUs als auch GPUs zulaufen, auf einem einzelnen Rechner oder verteilt im Cluster.Damit ist es sehr hybrid und zukunftssicher.Google baut sogareigene Chips, die für TensorFlow optimiert sind, sogenannteTPUs, die wohl auch beim Sieg von AlphaGo gegen denmenschlichenSpielerzumEinsatzkamen.

DochdieVorteilegehenbisindieTool-Chainhinein:TensorFlowlässt sichübereine „TensorBoard“genannteOberflächebeiderArbeit zusehen bis hin zur Visualisierung des Verarbeitungs-

Page 33: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Graphen.IstdasModellfertigtrainiert,kannmanesabspeichernundz.B.unterAndroidladenundverwenden.

EinBeispiel dafür ist dasword2vec-Modell,welchesvonGoogleauf Basis von 100 Milliarden Wörtern erstellt wurde und jetztOpenSourceist.AndiesesModelllassensichFragenstellenwie:„Mensch + Roboter“ und das Modell antwortet mit „Cyborg“.Oder: „Katzeverhält sichzuKatzenjungeswieHundzu…?“unddasModellantwortetmit„Welpe“.

MitDeepLearningindieZukunftJAXenter:WassindausdeinerSichtnochspannendeProjekteimBereichDeepLearning?DieGroßenderInternet-Weltsinddajageradedabei,ihreeigenenSystemeandenStartzubekommen:Facebook,Amazon,Google,Microsoft–unddasindnatürlichnochdieSpracherkennungenvonApplesSiri,MicrosoftsCortana,etc.

BerndFondermann: Spannend finde ich vor allem,wie gut dieErgebnisse sind, die man selber mit wenig Einsatz bekommenkann. Kollegen von mir haben an einem Wochenende ein NNtrainiert,welchesschnellerbessereResultatealsdieklassischenBilderkennungsalgorithmen lieferte.Unddie sind jaauchschonganzgut.

VielleichtlöstmansichjavommenschlichenGehirnundmachteinenSprungzubesserenArchitekturen.

JAXenter:IndeinemArtikelschreibstdu,Deep-Learning-NetzwerkestehenheutenochamAnfang.Wasfehltnoch,umwirklichinneueBereichevorzustoßen?

Bernd Fondermann: Mehr Rechenpower und mehr Erfahrungmit diesen Systemen. Ernsthaft wird das ja gerade erst seitwenigen Jahren betrieben. Spekulation ist da eher unseriös,genauso wie Zeitangaben. Vielleicht löst man sich ja vommenschlichen Gehirn und macht einen Sprung zu besserenArchitekturen, auf die der Mensch aufgrund der Kürze derbisherigen Evolution bei seinem eigenen Gehirn noch nichtgekommenist.

JAXenter:VielenDankfürdiesesInterview!

Page 34: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

DieFragenstellteHartmutSchlosser.

BerndFondermannistfreierSoftwareentwicklerundhateineSchwächefürverteilteSystemeundDatenspeicher,dieohneSQLabgefragtwerdenkönnen.EristMemberderApacheSoftwareFoundationundversucht,mitderVielzahlderIncubator-Projektedortschrittzuhalten.

Page 35: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

MachineLearningundeinfacheNeuronaleNetze

KünstlicheneuronaleNetze:EinMachine-Learning-BeispielmitNeurophEinguterStartfürdenEinstieginMaschinellesLernenundNeuronaleNetzeistdasJavaFrameworkNeuroph.DerDuke’sChoiceAwardsGewinner2013enthälteinequelloffeneJavaLibraryfürdieUmsetzunggrundlegenderNN-Konzepte.DasBeispieleinesOrder-Management-Systemszeigt,wasschoninwenigenSchrittenmitMaschinellemLernenmöglichist.vonValentinSteinhauer

MachineLearningundeinfacheNeuronaleNetzeEntsprechend dem jüngstem Industrie-4.0-Programm desBundesministeriums für Wissenschaft und Forchung (BMFW)werden uns mehr und mehr Aufgaben aus dem Bereich dessogenannten Machine Learning bevorstehen. Was ist damitgemeint?

In der Wikipedia kann man folgende Beschreibung finden:

Page 36: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

“…Maschinelles Lernen ist ein Oberbegriff für die „künstliche“GenerierungvonWissenausErfahrung:EinkünstlichesSystemlernt aus Beispielen und kann diese nach Beendigung derLernphaseverallgemeinern.”BeimmaschinellenLernenwerdenalso nicht einfach Beispiele auswendig gelernt. Stattdessenerkennt ein System Muster und Gesetzmäßigkeiten in denLerndaten, sodass auch unbekannte Daten beurteilt werdenkönnen.

Im Bereich des Maschinellen Lernen wurden schon mehrereLösungenerarbeitet,wie inderUCIListe zu sehen ist.MehrereEinträgeinderListebasierenaufNeuronalenNetzen.InmeinerArbeitszeitbinichbereitsmehrmalsmitSituationenkonfrontiertworden, wo Funktionalitäten benötigt werden, die mitNeuronalen Netzen simuliert werden können (Steinhauer,Margarita;Steinhauer,Valentin:„EinfacheIdentifizierungmittelsTippmustern“: 2012). Als Framework für ein Neuronales Netzhabe ich bei solchen Aufgaben Neuroph eingesetzt, das aktuellmit der letzten Version 2.92 verfügbar ist (Zoran Sevarac,Neuroph).

KünstlicheneuronaleNetzemitNeurophNeuroph ist nicht nur eine gute Wahl für diejenigen, die denUmgang mit Neuronalen Netzen erlernen oder damitexperimentieren möchten. Es ist auch für eine schnelleIntegration in das eigene Projekt geeignet. Es ist klein, gutdokumentiert,leichtzubenutzenundsehrflexibel.Außerdemistesgenugperformant,ummitseinerHilfeimmerwiederkehrendeeinfacheAufgabenzuerledigen.

Neuroph stellt im Paket ein GUI zum Experimentieren mitLernparametern zur Verfügung. Dies ist wichtig, da dieParameter oft individuell an das zu lösende Problem angepasstwerdenmüssen. Außerdemwird Ihnen durch das GUI erlaubt,verschiedene Netzarchitekturen auszuprobieren undkennenzulernen. Das Neuroph-Framework entwickelt sichmomentanindieRichtungdessogenanntenDeepLearningbzw.deradaptivenmehrschichtigenNeuronalenNetzen.

WerdenEinstieg indieWelt derneuronalenNetze sucht, siehtsich schnell einer großen Vielfalt an Themen konfrontiert. Daserste praktische Beispiel wird anhand des einfachsten Netzes

Page 37: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

gezeigt – dem sogenanntenPerzeptron.BeiNeugier aufweitereBeispieleseiauf[1]und[2]verwiesen.

SteuerungdesSystemsmiteinemPerzeptronDieAufgabenstellungunseresBeispiels: ImproduktivenBetriebeines Order-Management-Systems wird ständig analysiert, obStörungenbeiderBearbeitungderTransaktionenentstehenundwie sie schnell beseitigt werden können. Die Bearbeitung dereinzelnen Transaktionen in solchen Systemen bestehtnormalerweiseausmehrerenSchritten.NehmenwiralsBeispielfolgendeBearbeitungsschritte(States)an:

State0:DieAufträgebefindensichnochimInput-FilestoreState1 (NEW-REQUEST):AnnahmederAufträge insSystem,Ablegen der Daten in der Transaktionsdatenbank undErzeugenderentsprechendenTransaktionenState 2 (CONVERT-REQUEST): Konvertierung der Aufträgevon ankommenden Formaten (z. B. EDIFACT, XML) in daseinheitliche interne Format für dieweitere Bearbeitung imSystemState 3 (MAP-REQUEST): Mapping der Daten desankommenden Datenmodells auf das Datenmodell desBackend-SystemfürdieBearbeitungdortState 4 (SEND-REQUEST): Versenden der gemappten DatenalsAuftragandasBackend-System.State 5 (WAIT-RESPONSE): Empfangen der Resultate vomBackend-SystemundAufweckenderTransaktionenState 6 (MAP-RESPONSE): Mapping der Daten des Resultat-DatenmodellsaufdasDatenmodelldesUrsprungsauftragsState7(CONVERT-RESULT):Konvertierungdeseinheitlicheninternen Formats in das entsprechende Ausgangsformat (z.B.EDIFACT,XML)desUrsprungsauftragsState8(SEND-RESULT):VersendenderResultate

Jede Transaktion, die für die Bearbeitung eines Auftrags imSystem erzeugt wird, läuft sequenziell diese Schritte (States)durch. Zusätzlich ist die Bearbeitung der Transaktionen vonbestimmten Systemparametern abhängig,wie dem verfügbarenPlattenplatz (Files-PP), dem freien Tablespace in derDatenbank

Page 38: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

(DB-TS) oderder CPU-Auslastung (CPU-A).Nehmenwir an, dassdie Bearbeitung der Transaktionen an jedem oben genanntenSchritt mit einem eigenen Modul (z. B. einem Adapter)durchgeführtwird.AlsLösungeinerkritischenSituationkönnenfolgende Aktionen dienen, die später als Output-Werte fürneuronaleNetzegenutztwerden:

Input-Filestore schließen (Rechte für das Einstellen derAufträgeentziehen)E-MailandieSystemverantwortlichenschickenAlleAdapterherunterfahrenNachstarteneinzelnerAdapterNachstartenallerAdapter

DieseListeumfasstnatürlichnichtallemöglichenAktionen,zeigtaber, wie die automatische Prozesssteuerung benutzt bzw. wiesichdieseAufgabemitNeuronalenNetzelösenlässt.

WirhabenandieserStellenureinenInput-Vektor(boolean)undeinen Output-Vektor (boolean). Zu dieser Aufgabe passthervorragend das Perzeptron.Wir nehmen als Input-Vektor 12Neuronen (9 States und die drei oben genanntenSystemparametermitdenZuständenErreicht/Nichterreicht)undals Output-Vektor 5 Neuronen als Aktionen aus derEntscheidungsliste.

Die Input-NeuronenwerdennurdieWerte0oder1annehmen.Bei den States bedeutet der Wert 0, dass kein Stau vonTransaktionenvordemAdapterzurBearbeitunggebildetwordenist. Ein Stau von Transaktionen wird dann festgestellt und derWert auf 1 gesetzt, wenn die Anzahl der zur Bearbeitunganstehenden Transaktionen einen konfiguriertenWert erreichthat. Bei den Systemparametern sind die Werte 0 und 1 auchentsprechend zu interpretieren: 1, wenn ein konfigurierterSchwellenwert erreicht ist und 0, wenn er noch nicht erreichtwurde. Jetzt lässt sich dieses Modell als ein neuronales Netzdarstellen,nämlichalseineinfachesPerzeptron(Abb.1).

Page 39: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.1:DasModellzumOrdner-Management-SystemalsPerceptron.

DiemöglichenZuständederTransaktionsbearbeitungimSystemund die entsprechenden Entscheidungen sind in Vektorformpräsentiert.WiesinddieseDatenzuinterpretieren?NehmenwirfolgendeInput-/Output-Vektoren:

(0,0,1,0,0,0,1,0,0,0,0,0)→(0,1,0,0,0)

Plattenplatz steht ausreichend zur Verfügung. Die Größe desverfügbarenTablespacesinderDatenbankistauchausreichend.Die CPU-Auslastung der Maschine ist jedoch kritisch, weil derkonfigurierte Schwellenwert erreicht ist. Im State 3 bei derTransaktionsbearbeitung (MAP-REQUEST)befindensichzuvieleTransaktionen.AlsohatsicheinStauvonTransaktionenvordemMapping der Aufträge gebildet. Alle anderenBearbeitungsschritte sind von demProblemnicht betroffen. DaeinNachstartdesentsprechendenAdapters/ModulswegenhoherCPU-Auslastung nicht möglich ist, wird als Entscheidung desSystems oder als aus der Situation resultierendeAktion eine E-

Page 40: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Mail mit entsprechenden Informationen an dieSystemverantwortlichengeschickt.

ImplementierungundPrognoseErzeugen wir zunächst das Projekt und binden entsprechendeLibrariesein:

Nach dem Download des neuroph-2.92.zip öffnen Sie einProjekt und legen ins lib-Verzeichnis folgende Pakete ab:neuroph-core-2.92.jar, slf4j-api-1.7.5.jar und slf4j-nop-1.7.6.jarDanach kopieren Sie folgendeMethoden ins Projekt: main,testNeuralNetwork und unknownCaseNeuralNetwork(loadedPerceptron)LassenSiedasProjektlaufen

Die main-Methode enthält alle benötigten Daten, den Aufrufmachine learning, den Aufruf machine testing(testNeuralNetwork(loadedPerceptron, trainingSet)) und denAufruf machine predicted state(unknownCaseNeuralNetwork(loadedPerceptron)).

publicstaticvoidmain(String[]args){

DataSettrainingSet=newDataSet(12,5);

trainingSet.addRow(newDataSetRow(newdouble[]{1,0,0,

0,0,0,0,0,0,0,0,0},newdouble[]{1,1,0,0,0}));//1

trainingSet.addRow(newDataSetRow(newdouble[]{0,1,0,

0,0,0,0,0,0,0,0,0},newdouble[]{1,1,1,0,0}));//2

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

1,0,0,0,0,0,0,0,0},newdouble[]{0,0,0,1,0}));//3

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

1,0,0,0,0,0,0,0,0},newdouble[]{1,1,0,0,0}));//4

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,1,0,0,0,0,0,0,0},newdouble[]{0,1,0,0,0}));//5

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,1,0,0,0,0,0,0,0},newdouble[]{0,0,0,1,0}));//6

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,0,1,0,0,0,0,0,0},newdouble[]{0,1,0,0,0}));//7

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,0,0,1,0,0,0,0,0},newdouble[]{0,0,0,1,0}));//8

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,0,0,1,0,0,0,0,0},newdouble[]{0,1,0,0,0}));//9

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,0,0,0,1,0,0,0,0},newdouble[]{0,1,0,0,0}));//10

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

Page 41: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

0,0,0,0,1,0,0,0,0},newdouble[]{0,1,0,0,0}));//11

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,0,0,0,0,1,0,0,0},newdouble[]{0,0,0,1,0}));//12

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,0,0,0,0,1,0,0,0},newdouble[]{0,1,0,0,0}));//13

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,0,0,0,0,0,1,0,0},newdouble[]{0,0,0,1,0}));//14

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,0,0,0,0,0,1,0,0},newdouble[]{0,1,0,0,0}));//15

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,0,0,0,0,0,0,1,0},newdouble[]{0,0,0,1,0}));//16

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,0,0,0,0,0,0,1,0},newdouble[]{0,1,0,0,0}));//17

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

0,0,0,0,0,0,0,0,1},newdouble[]{0,1,0,0,0}));//18

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

0,0,0,0,0,0,0,0,1},newdouble[]{0,1,0,0,0}));//19

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,0,

1,1,1,1,1,1,1,1,1},newdouble[]{0,0,0,0,1}));//20

trainingSet.addRow(newDataSetRow(newdouble[]{0,0,1,

1,1,1,1,1,1,1,1,1},newdouble[]{1,1,0,0,0}));//21

//createperceptronneuralnetwork

NeuralNetworkmyPerceptron=newPerceptron(12,5);

//learnthetrainingset

myPerceptron.learn(trainingSet);

//savetrainedperceptron

myPerceptron.save("mySamplePerceptron.nnet");

//loadsavedneuralnetwork

NeuralNetworkloadedPerceptron=

NeuralNetwork.load("mySamplePerceptron.nnet");

//testloadedneuralnetwork

System.out.println("Testingloadedperceptron");

testNeuralNetwork(loadedPerceptron,trainingSet);

unknownCaseNeuralNetwork(loadedPerceptron);

}

Listing1:MainMethod

publicstaticvoidtestNeuralNetwork(NeuralNetworkneuralNet,

DataSettestSet){

for(DataSetRowtrainingElement:testSet.getRows()){

neuralNet.setInput(trainingElement.getInput());

neuralNet.calculate();

double[]networkOutput=neuralNet.getOutput();

System.out.print("Input:"+

Arrays.toString(trainingElement.getInput()));

System.out.println("Output:"+

Arrays.toString(networkOutput));

}

}

Page 42: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Listing2:TestMethod

publicstaticvoidunknownCaseNeuralNetwork(NeuralNetwork

neuralNet){

DataSetRowunknownElement=newDataSetRow();//toprint

only

unknownElement.setInput(newdouble[]{1.0,0.0,1.0,0.0,

0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0});//toprintonly

neuralNet.setInput(newdouble[]{1.0,0.0,1.0,0.0,0.0,

0.0,1.0,0.0,0.0,0.0,0.0,0.0});

neuralNet.calculate();

double[]networkOutput=neuralNet.getOutput();

System.out.print("unknowncase,input:"+

Arrays.toString(unknownElement.getInput()));

System.out.println("output:"+

Arrays.toString(networkOutput));

}

Listing3:PrognoseMethod

Die oben beschriebenen Situationen sind aus der Praxisentnommen und decken daher nicht alle Fälle ab. Sie sinddennoch hilfreich, um den Einsatz eines Perzeptrons für dieProzesssteuerung zu verdeutlichen. Mit den oben gezeigtenTrainingsdatenwird das Prozesssteuerungsperzeptron trainiert.BeiBedarfkönnendieseDatenerweitertwerden,ohnedassdieSoftwareangepasstwerdenmuss.

Diese einfache Perzeptron-Anwendung kann operativeProzesssteuerung in der Produktion nicht nur effektiv, sondernauch in angemessener Zeit gestalten. Was passiert, wenn eineunerwartete Situation eintritt? Zum Beispiel, wenn etwasblockiertistunddamiteinigeWerte1sind?

(1.0,0.0,1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0)

DasPerzeptrongibtaus:11000:

(1.0,1.0,0.0,0.0,0.0)

Das bedeutet, es müssen die Input-Filestores geschlossen undeine E-Mail an die Systemverantwortlichen geschickt werden.Man kann sagen, dass hier eine künstliche Generierung vomWissenstattgefundenhat.

Wie wir gesehen haben, ist das Perzeptron geeignet, diese

Page 43: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

einfachelogischeAufgabezulösen.IneinigenanderenFällenistdas Problem aber keine einfache logische Aufgabe. Zur Lösungsolcher Probleme kann das sogenannteMulti Layer Perzeptron(MLP)eingesetztwerden.

Alarm-Zeit-AbschätzungWir haben im vorherigen Kapitel die Systemparameter in denInput-Vektor aufgenommen und mit boolschen Werten belegt.ÜberschreitetderWertdabeieineGrenze,wirderauf1gesetzt.EskanndieFrageaufkommen,wieschnellderkritischeZustanderreichtwerden kann. An dieser Stelle ist einMLP die richtigeWahl; mit einer odermehreren Schichten zwischen den Input-und Output-Schichten. Wir werden nicht tief in die Theoriegehen, sondern befassen uns nur praktisch mit folgenderFaustregel: Eine Schicht zwischen Input und Output mit 2n+1Knoten,wobeindieAnzahlderEingangsparameterist(Abb.2).

Page 44: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.2:DasMultiLayerPerceptronderZeitabschätzung

BauenwireinMLP,umabzuschätzen,wielangedasSystemnichtin den kritischen Zustand kommt. Nehmen wir die dreiEingangsparameter wie oben: der Plattenplatz (der noch freieSpeicher prozentual zum verfügbaren), der noch freieTablespace-PlatzinderDatenbank(prozentualzumverfügbaren)und die noch mögliche CPU-Auslastung (prozentual zurverfügbaren). Das heißt, dass für die Zwischenschicht 3×2+1=7gilt. Als Input-/Output-Parameter dient die Zeit bis zum Alarm,normiertz.B.auf24Stunden.

DataSettrainingSet=newDataSet(3,1);

trainingSet.addRow(newDataSetRow(newdouble[]{0.1,0.1,

Page 45: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

0.1},newdouble[]{0.1}));

trainingSet.addRow(newDataSetRow(newdouble[]{0.2,0.2,

0.2},newdouble[]{0.2}));

trainingSet.addRow(newDataSetRow(newdouble[]{0.3,0.3,

0.3},newdouble[]{0.3}));

trainingSet.addRow(newDataSetRow(newdouble[]{0.4,0.4,

0.4},newdouble[]{0.4}));

trainingSet.addRow(newDataSetRow(newdouble[]{0.5,0.5,

0.5},newdouble[]{0.5}));

trainingSet.addRow(newDataSetRow(newdouble[]{0.99,

0.99,0.99},newdouble[]{0.99}));

//createperceptronneuralnetwork

MultiLayerPerceptronmyMlPerceptron=new

MultiLayerPerceptron(TransferFunctionType.GAUSSIAN,3,7,1);

//learnthetrainingset

myMlPerceptron.learn(trainingSet);

//savetrainedperceptron

myMlPerceptron.save("mySampleMlPerceptron.nnet");

//loadsavedneuralnetwork

NeuralNetworkloadedPerceptron=

NeuralNetwork.load("mySampleMlPerceptron.nnet");

//testloadedneuralnetwork

System.out.println("Testingloadedperceptron");

testNeuralNetwork(loadedPerceptron,trainingSet);

unknownCaseNeuralNetwork(loadedPerceptron);

Listing4:MainMethod

Anmerkung: Die Zwischenschicht wird mit einerÜbertragungsfunktion der TransferFunctionType als Gaussianverknüpft. Ob es in anderen Fällen die gleicheÜbertragungsfunktion sein sollte,hängtvondenTrainingsdatenab. Diese müssen untersucht werden, bevor man über dieseFunktion entscheiden kann. Eine Empfehlung ist, mehrere imPaket angebotene Funktionstypen zu testen, um bessereÜbereinstimmungzwischendenTestdatenunddenVorhersagenzu erreichen. Beim oben genannten Funktionstyp für Gaussianbekommen wir Folgendes (die testNeuralNetwork-Methodewurdenichtgeändert):

Input:[0.1,0.1,0.1]Output:[0.181]

Input:[0.2,0.2,0.2]Output:[0.271]

Input:[0.3,0.3,0.3]Output:[0.373]

Input:[0.4,0.4,0.4]Output:[0.4723]

Input:[0.5,0.5,0.5]Output:[0.563]

Input:[0.99,0.99,0.99]Output:[0.919]

Die erste Auffälligkeit ist, dass die Genauigkeit nicht besonders

Page 46: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

hoch ist. Dafür gibt es natürlich Gründe, die sowohl beimNeuroralenNetzliegenalsauchandenMessungen.WiemandieGenauigkeit erhöhen kann, ist ein spezielles Thema und kannspäterineinemanderenArtikeldiskutiertwerden.BerechnenwirjetztdiePrognose:

publicstaticvoidunknownCaseNeuralNetwork(NeuralNetwork

neuralNet){

DataSetRowunknownElement=newDataSetRow();//toprint

only

unknownElement.setInput(newdouble[]{0.15,0.2,

0.3});//toprintonly

neuralNet.setInput(newdouble[]{0.15,0.2,0.3});

neuralNet.calculate();

double[]networkOutput=neuralNet.getOutput();

System.out.print("unknowncase,input:"+

Arrays.toString(unknownElement.getInput()));

System.out.println("output:"+

Arrays.toString(networkOutput));

}

Listing5:Prognose

UnddasResultatist:

unknowncase,input:[0.15,0.2,0.3]output:[0.309]

Das können wir wie folgt interpretieren: Der noch freiePlattenplatz liegt bei 15 Prozent, der noch freie Platz imTablespacebeträgt20ProzentunddieCPU-Auslastungkannnochum 30 Prozent steigen. Falls die Daten prozentual noch weitersteigen,kanndasinrundachtStundenzumSystemcrashführen(24/3,09). So hat auch hier eine künstliche Generierung vomWissenstattgefunden.

SokanneineE-MaildenSystembetreuerbenachrichtigen:ACHTUNG!

INCA.8STUNDENISTEINSYSTEM-CRASHZUERWARTEN:SIEMÜSSENDIEINPUT-FILESTORESSCHLIEßEN.

10.07.201612:31

IHRGELEHRTESSYSTEM

FazitDie Umsetzung von Machine-Learning-Anwendungen mit demNeuroph-Framework ist gut möglich, effektiv und

Page 47: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

empfehlenswert. Viele Probleme bleiben für einen Entwicklermit demNeuroph-Paket imHintergrund gelöst.Wir freuen unsüberRückmeldungen:[email protected].

Dr.ValentinSteinhaueristbeiCorisecioinDarmstadttätig.ErverfügtübermehrjährigeErfahrungausSoftwareprojektenalsCoach,Trainer,Architekt,TeamleiterundEntwickler.

Literatur[1]Gupta,MadanM.;Jin,Liang;Homma,Noriyasu:“StaticandDynamicNeuralNetworks:FromFundamentalstoAdvancedTheory”:JohnWiley&Sons,2003

[2]Dr.Schwabe,Lars:“DerMachineLearningEngineer”:inJavaMagazin,8/2016

Page 48: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

LarsSchwabeimInterview

MaschinellesLernen:VomForschungsgegenstandzurCommodityWirsprechenmitMachine-Learning-ExpertenundW-JAX-SpeakerLarsSchwabe(LufthansaIndustrySolutions)überdieHintergründevonMaschinellemLernenundwarumesauchfürEntwicklerwichtigist,sichdamitauseinanderzusetzen.

JAXenter:VieleEntwicklerhabenwährendihresStudiumssicheretwasüberMaschinellesLernengehört.JetztscheintesaberimmermehrdenWegvonderWissenschaftindieUnternehmenzufinden.WashatsichindenletztenJahrenverändert?

LarsSchwabe:Es ist einerseitsdieAkzeptanz fürMethodenderKünstlichen Intelligenz und des Maschinellen Lernens in denUnternehmen.IchsehedasimKontextdesgenerellenTrendsderDigitalisierung,derbeiEntscheidernzunehmendInteressewecktfürmehrAutomatisierung. Viele sind natürlich auch getrieben.DieUnternehmendesSiliconValleyszeigen,wieDatenverwertetwerden können. Hier will kein CEO oder CIO auf der Bremsestehen.WennnunbeispielsweiseimManagerMagazinArtikelzu„Artificial Intelligence“ auftauchen oder GoogleManager davonsprechen, dass Machine Learning am besten in jedes Produktintegriert werden sollte, dann ebnet dies den Weg in denUnternehmenfürinnovativeMethodenwieMaschinellesLernen.

WasvorwenigenJahrennochForschungsgegenstandwar,istinzwischenCommodity.

AufmethodischerundtechnischerEbenesindaufjedenFalldieErfolge des Deep Learnings zu nennen, die natürlichbeeindruckend sind, aber durch die Medien natürlich auchverstärkt und teilweise verzerrt werden. Außerdem sindinzwischen viele Frameworks und APIs verfügbar, die esEntwicklern ermöglichen, Anwendungen mit Techniken des

Page 49: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

MaschinellenLernenszurealisieren.Hieristinzwischenweitausweniger Handarbeit notwendig also noch vor wenigen Jahren.Das ist die Leistung von – so nenne ich diese Rolle gerne –MachineLearningEngineers.DerNachteildabei:DerEntwicklerkann oft nicht mehr unter die Motorhaube schauen und dieMechanikgenauverstehen.

Aber wennman genau hinschaut, dannwurdenMethoden derKünstlichenIntelligenzschonlängerinUnternehmeneingesetzt.Eswaroftnurnichtsosichtbar.DieEinstiegshürde ist fürvieleUnternehmen inzwischen aber weitaus niedriger. Das sehe ichals grundsätzlichesMuster in der Technologieentwicklung:Wasvor wenigen Jahren noch Forschungsgegenstand war, istinzwischen Commodity. Forschungsinhalte werden zuTechnologien weiter entwickelt, die genutzt werden können,ohnedassderEntwicklersieimDetailzuverstehenbraucht.Undin der IT passiert dies gerade im Bereich der KünstlichenIntelligenzunddesMaschinellenLernens.

JAXenter:Vollkommenverstandenhatmannochnicht,wasgenaubeimMaschinellenLernenpassiert.IstdieTechnikdennreiffürdenEinsatzimAlltag?

LarsSchwabe:DasstimmtsonurzumTeil.Eswirdoftbemerkt,dassmanDeep Learning imDetail nicht verstanden habe. Unddas gilt wohl auch für einige andere Anwendungen desMaschinellen Lernens. Aber was ist mit „Verstehen“ hiergemeint?Damitistgemeint,dasswirüberTheorienverfügen,mitdenen wir Voraussetzungen und Grenzen beim Einsatz desMaschinellenLernensbestimmenkönnen.

ManchmalistdieTheoriederPraxisvoraus.ManchmalistdiePraxisderTheorievoraus.

UmMissverständnissezuvermeiden:SolcheTheoriengibtes!Siewerden auch an Universitäten gelehrt. Im Bereich desMaschinellen Lernens ist besonders die statistische Lerntheorierelevant. Natürlich ist auch dies ein lebendiges Forschungsfeld.Nichtalles,wasinderPraxisumgesetztwirdundoffenbarauchgut funktioniert ist im Detail theoretisch begründet. Manchmalist die Theorie der Praxis voraus. Manchmal ist die Praxis derTheorievoraus.AberauchdasisteingrundsätzlichesMuster,das

Page 50: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

überalldortauftaucht,womathematischeTheorienfürOrdnungundKlarheitsorgen,z.B.inderNumerikoderOptimierung.

Im Bereich der IT will ich zurück fragen: Welcher Entwicklerwendet formale Methoden an, um die Korrektheit vonImplementierungen nachzuweisen? Vielen Entwicklern sinddieseoftnichteinmalbekannt.HierbehilftmansichmitTesten.Das ist eine empirische Methode, aber keine Theorie.MaschinellesLernenistmeinesErachtensauf jedenFallreiffürden Einsatz in der Praxis unter der Voraussetzung, dassPraktiken wie Testen, Monitoring und Alerting systematischangewendetwerden.

JAXenter:WarumsolltensichauchklassischeSoftwareentwicklerjetztmitdemThemabeschäftigen?IstMaschinellesLernennichtehereinThemafürdiesogenanntenDataScientists?

Lars Schwabe: Im Java Magazin hatte ich dazu bereits meineSicht artikuliert und für die Rolle des Machine LearningEngineersgeworben.Ichdenke,dassdererfolgreicheEinsatzvonMachine Learning ganz besonders abhängt von fähigenEntwicklern. Ein Data Scientist muss mächtige Tools nutzen,einfachenZugangzuDatenhabenunddieentwickeltenModelleirgendwohin deployen können. Deshalb ist eine Aufgabe füreinen Machine Learning Engineer, diese Voraussetzungen zuschaffen.

WenneinEntwicklerdasHerzeinesInformatikershat,sollteMaschinellesLernenzumRepertoiregehören.

Fürmich ist es überhaupt keine Frage:Maschinelles Lernen istimKernein Informatikthema.DieMechanisierungdesDenkenswarundisteinedergroßenMotivationenfürdieInformatikalsWissenschaft. Maschinelles Lernen ist eine Variante davon.Wenn ein Entwickler das Herz eines Informatikers hat –unabhängig davon, ob er ein Quereinsteiger oder studierterInformatiker ist –, dann sollte Maschinelles Lernen zumRepertoire gehören, genau wie Mechanik und ElektrodynamikzumRepertoireeinesPhysikersgehören.

JAXenter:WievielTheorie,z.B.überNeuronaleNetzeundDeepLearning,brauchteinEntwicklerfürdenEinstieginMaschinelles

Page 51: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Lernen?

LarsSchwabe:NeuronaleNetzeundDeepLearningwill ichgarnichtsoherausstellen.DassindnurspezifischeModelle,dieaufGrundlagevonDatengelerntwerden.WichtighalteichKenntnisvon Kennzahlen, um die Güte von Prädiktionen zu bewerten,beispielsweise das Lesen der Konfusionsmatrix für binäreKlassierungen(Artikel„BeurteilungeinesbinärenKlassifikators“in Wikipedia) oder das Verständnis der sogenannten ReceiverOperator Characteristics, ROC (Artikel „Receiver OperatingCharacteristic“ in Wikipedia). Auch Themen wie Overfittingsollten bekannt sein, ebenso die Unterscheidung zwischenTrainings-, Test- undValidierungsdatensatz.Das reicht, um sichdann mit existierenden Frameworks und Datensätzen zubeschäftigen.

JAXenter:WasfasziniertSiepersönlichandemThema?

LarsSchwabe:Eshörtsichvielleichtetwashochtrabendan,aberwasmicheigentlichmotiviertistzuverstehen,wieWahrnehmenundDenkenfunktioniert.DeshalbhatteichmichauchlangeZeitmitNeurowissenschaftbeschäftigt.MichinteressiertdieTheoriedesMaschinellenLernensundderKünstlichenIntelligenzalseinWerkzeug dazu. Das Entwickeln von lauffähigen technischenSystemen ist dabei aber nicht nur ein Nebeneffekt. Indem wirlauffähige technische Systeme entwickeln und bauen, schärfenwirunsereTheorienundentwickeltTechnologien,diedasLebenvonvielenMenschenverbessern.

JAXenter:GebenSieunserenLesernbittedreiTipps,wiemangutindasThemaMaschinellesLerneneinsteigenkann.

LarsSchwabe:

1. Ein etwas älteres Fachbuch, das aber nichts an Aktualitätverlorenhat:JudeaPeral,ProbabilisticReasoninginIntelligentSystems:Networks of Plausible Inference (Morgan KaufmannSeriesinRepresentationandReasoning).Hiergehtesgarnichtprimär um das Lernen, aber um eine Methode, die fürmodernesMaschinellesLernenunentbehrlichist.

2. DerOnline-KurszumMaschinellenLernenvonAndrewNg3. Steven Spielbergs Vollendung von Kubricks Werk zur

KünstlichenIntelligenz:DerFilm„AI“(Artikel„A.I.:Künstliche

Page 52: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Intelligenz“inderInternetMovieDatabase(IMDb)).

JAXenter:VielenDankfürdasGespräch!

DieFragenstellteMelanieFeldmann.

LarsSchwabehatanderTUBerlininInformatikpromoviert.ErleitetderzeitdasDataInsightLabimTechnologyInnovationCenterderLufthansaIndustrySolutions,woDataScientistsundML-ExpertenfürIndustrieunternehmenneuedatengetriebeneLösungen

entwickeln.

Page 53: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

EinBlickaufdasMicrosoftBotFramework

EineneigenenChatbotbauenSeitMärzhatMicrosofteineigenesBot-Framework.Entwicklernsollesdamitleichtgemachtwerden,eigeneBotszuschreiben–alsomöglichstintelligenteProgramme,dieineinemChatAntwortengebenundAktionendurchführenkönnen.Wasstecktdahinter?WohilftdasFramework?Und:Wozueigentlich?vonRomanSchacherlundDanielSklenitzka

Jetzt haben wir uns gerade erst damit abgefunden, dassKonsolenanwendungen(CLI,CommandLineInterfaces)nichtderGipfel der Usability sind. Nach GUI kam NUI (Natural UserInterface) – wobei sich die Interpretation zum Teil nur auf dieVerwendung des Fingers statt der Maus reduzierte. Und dannkamenSiri,GoogleNowundCortana.Plötzlich findenBenutzerGefallen daran, mit Software zu kommunizieren – sei esmündlich oder schriftlich. Nicht die TV-App zu starten, denSenderauszuwählen,insHauptabendprogrammzuscrollenunddieBeschreibung zu öffnen – sonderndasVorhaben einfach inWortezugießen:„WasläuftheuteAbendauf3sat?“.

Genau in diese Kerbe schlagen Conversational User Interfaces(CUI). Die Schnittstelle zwischen Mensch und Computer nähert

Page 54: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

sich immer mehr einer Mensch-zu-Mensch-Kommunikation anund verdient immer öfter die Bezeichnung „intelligent“. Damitdas zuverlässig funktioniert, ist ein tiefes Verständnis vonSpracheerforderlich.GesprocheneSätzemüssenanalysiertundin Text umgewandeltwerden, bei geschriebenenTexten dürfenauch kleinere Tipp- oder Rechtschreibfehler der Erkennungkeinen Abbruch tun. Darüber hinaus muss ein CUI über denaktuellen Kontext Bescheid wissen: Wer spricht? Was wurdebereits gesagt? Was muss nicht gesagt werden, kann aber ausanderen Informationsquellen (Internet, Kalender, Kontakte)ermittelt werden? Was wurde bereits erlernt und kann alsgegeben hingenommen werden? Es ist das Ende von hartenFakten, Interpretation ist angesagt: „um 10 Uhr“ bedeutet amMorgenetwasanderesalsamspätenAbend.

Kurzum: Das Entwickeln von Conversational User Interfaceserfordert weitaus mehr als ein paar aneinandergereihte if-Statements, die dem Benutzer vordefinierte Phrasenzurückwerfen. Es geht um das Verständnis von Sprache – mitallem,wasdazugehört.

DasMicrosoftBotFrameworkDasMicrosoft Bot Framework stellt einen Werkzeugkasten fürdie Entwicklung derartiger Schnittstellen – eben Bots – zurVerfügung.EsunterstütztbeiderEntwicklung(BotBuilderSDK),der Verteilung/Bewerbung (Bot Directory) und der IntegrationvonBotsinandereKommunikationsplattformen(BotConnector).Darüber hinaus stehen Cognitive Services bereit, umbeispielsweise beim Verständnis von Texten oder Bildernassistierend zur Seite zu stehen – nicht ausschließlich für Bots,abergeradedortsehrhilfreich.

BotBuilderSDKDasSDKstehtaufGitHubuntereinerOpen-Source-Lizenzsowohlfür C# als auch für Node.js zur Verfügung. Dieser Artikelbeschäftigt sich im Folgenden mit der C#-Variante. ImWesentlichenisteinBotnichtsanderesalseinREST-Service,dereinbestimmtesProtokollspricht:

publicasyncTask<Message>Post([FromBody]Messagemessage)

{

Page 55: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

...

}

Listing1

Man bekommt also eine Message, und muss auch wieder eineMessage zurückliefern, wobei immer sämtliche Informationendes Gesprächs hin- und hergeschickt werden – dieImplementierung muss zustandslos erfolgen, damit der Botspäterbeliebigskaliertwerdenkann.DarüberhinausbeinhalteteineMessage diverseMetainformationen (Sprache, Teilnehmer,…).

Man kann entweder mit einer leeren ASP.NET-Anwendungstarten, das SDK über NuGet hinzufügen(Microsoft.Bot.Connector) und einen entsprechenden HTTP-Endpunkt implementieren – oder man installiert das BotApplicationTemplate,daseinembeiderErstellungeinesProjektsdieseSchritteabnimmt.

Für die weitere Implementierung dieses Service stellt das SDKüber ein weiteres NuGet-Package Microsoft.Bot.Builder zweiverschiedene Hilfestellungen zur Verfügung: Dialoge und FormFlow. Diese sollen nun anhand desselben Beispiels vorgestelltwerden: Ziel ist es, einen Bot für ein Projektmanagement- undZeiterfassungssystem zu entwickeln, der einem bei derEinrichtung von Benachrichtigungen behilflich ist. Diese sollenversandtwerden,wennineinemProjekteinbestimmterTeildes(Zeit-)Budgets aufgebraucht ist. Der Botmuss also in Erfahrungbringen, für welches Projekt und nach welchem Zeitraum (inStunden oder Tagen) die Benachrichtigung erstellt werden soll.DasListingzeigteineentsprechendeKlasse.

publicenumAmountType

{

Hours,

Days

}

[Serializable]

publicclassAlert

{

publicstringProject{get;set;}

publicintAmount{get;set;}

publicAmountTypeAmountType{get;set;}

Page 56: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

}

Listing2

DialogeDer Begriff „Dialog“ ist im Bot Framework im ursprünglichenWortsinn zu verstehen – und nicht wie sonst in derSoftwareentwicklung üblich als Synonym für einAnwendungsfenster. Ein Dialog ist eine – im besten Fallewiederverwendbare – kurze Konversation zwischen BenutzerundBot,dieeinebestimmteInformationalsErgebnisliefert.EinDialog kann dabei weitere Dialoge aufrufen, sodass sich einGespräch mit einem Bot meist aus mehreren Dialogenzusammensetzt. Das Framework definiert ein (rechtüberschaubares)InterfacefüreinenDialog:

publicinterfaceIDialog<outT>

{

TaskStartAsync(IDialogContextcontext);

}

Listing3

Listing4zeigtdieersteVersionderKlasseAlertDialog,diediesesInterfaceimplementiert.

[Serializable]

publicclassAlertDialog:IDialog<Alert>

{

privateAlertalert;

publicasyncTaskStartAsync(IDialogContextcontext)

{

context.Wait(MessageReceivedAsync);

}

privateasyncTaskMessageReceivedAsync(IDialogContextcontext,

IAwaitable<Message>argument)

{

varmessage=awaitargument;

awaitcontext.PostAsync("IchhabeSieleidernicht

verstanden.");

context.Wait(MessageReceivedAsync);

}

}

Listing4

Page 57: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

DasPattern,dasdabeiverwendetwird,siehtaufdenerstenBlicketwasungewöhnlichaus,mangewöhntsichaberschnelldaran:DurchdenAufrufvoncontext.WaitwartetmanaufdienächsteNachricht und gibt eine Callback-Methode an. In unseremeinfachen Beispiel wird dieseMethode sofort aufgerufen, da jabereits eine Nachricht verfügbar ist. Bemerkenswert ist, dassauch der Zugriff auf dieMessagemittels await erfolgenmuss –mitdemWartenaufdieNachrichthatdasabernichtsmehrzutun.MitPostAsync kannman eineAntwort senden, umdanachwiedermittelsWaitaufdienächsteAntwortzuwarten.

GesprächemitdiesererstenVersionunseresBotssindvielleichtnochetwaseintönig(böseZungenbehauptenallerdings,fürdenEinsatz im Kundendienst mancher Unternehmen würde esbereitsreichen).Listing5zeigtdennächstenSchritt:Wirprüfen,obdieeingegangeneMessagegleichdemText„NeuerAlarm“ist.Wenndemsoist,startenwireinenneuenDialog,umdenNamendesProjektszuerfragen.

privateasyncTaskMessageReceivedAsync(IDialogContextcontext,

IAwaitable<Message>argument)

{

varmessage=awaitargument;

if(message.Text.Equals("neueralarm",

StringComparison.CurrentCultureIgnoreCase))

{

PromptDialog.Text(context,

ProjectReceivedAsync,

"FürwelchesProjekt?",

"Entschuldigung-welchesProjekt?");

}

else

{

awaitcontext.PostAsync("IchhabeSieleidernicht

verstanden");

context.Wait(MessageReceivedAsync);

}

}

Listing5

Die Klasse PromptDialog bietet bereits mehrerewiederverwendbare Dialogimplementierungen, mit denen sichdiverseStandarddatentypenerfragenlassen–indiesemFalleinText. Als Parameter anzugeben ist wiederrum ein Callback,

Page 58: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

außerdemderTextfürdieFrageundoptionaleinezweiteFrage,fallsdieersteAntwortunverständlichist.AusdiesenBausteinenkönnenwir nun denAlert-Dialog fertig implementieren, sodassnach und nach die alert-Variable unserer Klasse befüllt wird(Listing 6). Dabei wird immer das beschriebene Musterverwendet. In den Callback-Methoden kann jeweils mit awaitresult auf den Rückgabewert des Dialogs zugegriffen werden.DurchdenAufrufvoncontext.DonebeendenwirschließlichdenaktuellenDialog.

privateasyncTaskProjectReceivedAsync(IDialogContextcontext,

IAwaitable<string>result)

{

this.alert=newAlert()

{

Project=awaitresult

};

PromptDialog.Choice(

context,

AmountTypeReceivedAsync,

new[]{"Tagen","Stunden"},

$"SollderAlarmfür{this.alert.Project}nachStundenoder

Tagenerfolgen?");

}

privateasyncTaskAmountTypeReceivedAsync(IDialogContext

context,IAwaitable<string>result)

{

varamountType=awaitresult;

this.alert.AmountType=(amountType=="Tage"?AmountType.Days

:AmountType.Hours);

PromptDialog.Number(

context,

AmountReceivedAsync,

$"Nachwievielen{(this.alert.AmountType==AmountType.Days

?"Tagen":"Stunden")}sollderAlarmeingestelltwerden?");

}

privateasyncTaskAmountReceivedAsync(IDialogContextcontext,

IAwaitable<long>result)

{

this.alert.Amount=(int)awaitresult;

PromptDialog.Confirm(

context,

FinishedAsync,

Page 59: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

$"MöchtestdueinenAlarmfürdasProjekt{alert.Project}

nach{alert.Amount}{(alert.AmountType==AmountType.Days?

"Tagen":"Stunden")}setzen?");

}

privateasyncTaskFinishedAsync(IDialogContextcontext,

IAwaitable<bool>result)

{

if(awaitresult)

{

//addalarm

context.Done(this.alert);

}

else

{

context.Done<Alert>(null);

}

}

Listing6

Im Service können wir den Alert-Dialog schließlich starten(Listing7).

publicasyncTask<Message>Post([FromBody]Messagemessage)

{

if(message.Type=="Message")

{

returnawaitConversation.SendAsync(message,()=>new

DiaryDialog());

}

else

{

returnHandleSystemMessage(message);

}

}

Listing7

ZeitfüreinenerstenTest:StartenSiedasProjektundmerkenSiesichdenlokalenPort,unterdemdieWebsiteläuft(üblicherweisePort3978).NatürlichkönntenSiejetztmitPostmanoderFiddlerRequests austauschen – einfacher geht es aber mit dem BotFrameworkEmulator[,Abb. 1]. Geben Sie in der oberen LeistedenURL(z.B.:http://localhost:3978/api/messages)anundachtenSiedarauf,dassdieApp-IDunddasAppSecretdenWertenausder Web.config entsprechen – vorerst können wir dieStandardwerte (YourAppId, YourAppSecret) belassen.

Page 60: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Anschließend steht Ihnen das linke Chatfenster zurKommunikationzurVerfügung,beimKlickenaufdasblaueIconindenAntwortensehenSieauchdasdazugehörigeJSON-Objekt.

Abb.1:BotFrameworkEmulator

Übrigens:wennSieCLIundCUImischenmöchten,dannkönnenSie auch ein Kommandozeilenprogramm als Emulator bauen;denentsprechendenSourcecodefindenSiehier.

Einfache Dialoge lassen sich also recht schnell implementieren,und auch komplexere Konversationen sind durch dieVerschachtelung von mehreren Dialogen gut handhabbar. Beider Erfassung von komplexeren Datenstrukturen als unsererAlert-Klasse kann es aber trotzdem schnell aufwendig werden,alle Eigenschaften „von Hand“ abzufragen. Hier kommt diezweiteVarianteinsSpiel.

FormFlowDie Grundidee von Form Flow ist, auf Basis einer C#-Klasse(Form) automatisch einen entsprechenden Dialog zu erstellen,der alle Felder undEigenschaften befüllt. Dazumüssenwir dieAlert-KlasseumeinestatischeMethodeerweitern,diemittelsderKlasseFormBuildereineIForm<Alert>erstellt:

Page 61: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

publicstaticIForm<Alert>BuildForm()

{

returnnewFormBuilder<Alert>().Build();

}

Listing8

Mithilfe dieser können wir dann einen entsprechenden Dialogerzeugen:

returnawaitConversation.SendAsync(message,()=>

FormDialog.FromForm(Alert.BuildForm));

Listing9

DieFormFlowEnginefragtdannSchritt fürSchrittnach jedemFeld,wobeidieFragen jenachDatentypunterschiedlichgestelltwerden. Bei Enumerationen werden beispielsweise gleich alleOptionenaufgelistet(Abb.2).

Page 62: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.2:FormFlow:JenachDatentypwerdenunterschiedlicheFragengestellt

IstmanmitdiesemStandardverhaltennichtzufrieden,kannmanauf verschiedene Arten eingreifen. So kann man mittels einesFluent-API beispielsweise den Begrüßungstext und dieAbschlussfrage formulieren oder mittels Attributen die Fragennach den jeweiligen Feldern beeinflussen. Dabei kommt eineeigene Pattern Languagemit Platzhaltern zum Einsatz,mit deretwadieWerteeinzelnerFelderoderdieverfügbarenOptionenangezeigt werden können (Listing 10). Eine detaillierteBeschreibungallerFeaturesfindenSiehier.

Auf dieseWeise ist esmitminimalemAufwandmöglich, selbstgroße Objekte zu befüllen, auch wenn man im Vergleich zurmanuellenImplementierungetwasFlexibilitätverliert.Dankderzahlreichen Konfigurationsmöglichkeiten fällt das allerdingskauminsGewicht,unddaaufBasisderFormebenfallseinDialogerstellt wird, lassen sich die beiden Ansätze auch wunderbarkombinieren.

publicenumAmountType

{

[Describe("Stunden")]

[Terms("Stunde","Stunden")]

Hours,

[Describe("Tagen")]

[Terms("Tag","Tage","Tagen")]

Days

}

[Serializable]

publicclassAlert

{

[Describe("Projekt")]

[Prompt("FürwelchesProjekt?")]

publicstringProject{get;set;}

[Describe("Art")]

[Prompt("WiesollderAlarmeingestelltwerden?{||}")]

publicAmountType?AmountType{get;set;}

[Numeric(1,100)]

[Describe("Limit")]

[Prompt("Nachwievielen{AmountType}sollderAlarm

eingestelltwerden?")]

publicintAmount{get;set;}

Page 63: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

publicstaticIForm<Alert>BuildForm()

{

returnnewFormBuilder<Alert>()

.Message("Hallo,ichhelfedirbeiderErstellung.")

.AddRemainingFields()

.Confirm("MöchtestdueinenAlarmfürdasProjekt{Project}

nach{Amount}{AmountType}setzen?")

.Message("DerAlarmwurdeerstellt.")

.Build();

}

}

Listing10

DeploymentundRegistrierungDaes sichbei einemBot-Projekt technologischumeinWeb-APIhandelt,kanndasDeploymentwiebeiherkömmlichenASP.NET-Anwendungenerfolgen–alsoauchaufOn-Premise-Servern.Dassdie Integration in Microsoft Azure leicht gemacht wird,überrascht aber natürlich wenig. In Visual Studio kannmittelsPUBLISH (KontextmenüdesProjekts)direkteinneuerApp-Servicein Azure erstellt werden (API-App); der Bot ist nach wenigenEingabenonline (Abb. 3). Sollte Ihr Bot großen Anklang findenund von vielen Benutzern konsultiert werden, spricht nichtsgegeneinScale-outderAzure-Instanzen:DankZustandslosigkeitdesServicekönnenwährendeinerKonversationproblemlosdieServergewechseltwerden.

Page 64: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.3:DeploymentalsAPI-AppinAzure

ImnächstenSchritt erfolgtdieRegistrierungdesBots.Unter [1]können Sie einen neuen Bot anlegen; vor allem der URL zumMessage Endpoint ist relevant (achten Sie auf die kompletteAngabe desURLs, also inkl. der Route auf /api/messages). AuchdieApp-IDistwichtig;derhiereingegebeneWertmussmitdemWert aus der Web.config im Bot-Projekt übereinstimmen undsollte spätestens jetzt auf einen sinnvollen Namen (ohne Leer-und Sonderzeichen) geändert werden. Die Aufnahme ins BotDirectory, die mittels Option beantragt werden kann, ist nochZukunftsmusik. In diesem Verzeichnis werden später alle Botsaufgelistet, derzeit sind aber nur die Microsoft-eigenenKandidatengelistet.

Page 65: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Abb.4:RegistrierungdesBots

NachderErstellungwerdenSiezurÜbersichtsseiteweitergeleitet(Abb.4),aufderSieu.a.dasPrimaryappsecretfinden.KopierenSie diesen Schlüssel, passen Sie damit die Web.config an undupdatenSiedenBotdurcheinerneutesDeployment.

BotConnectorZusätzlich sehen Sie auf der Übersichtsseite auch noch dendrittenTätigkeitsbereichdesMicrosoftBotFrameworks:denBotConnector. Über welches Interface möchten Sie mit dem Bot„sprechen“? Bisher haben Sie nur den Emulator genutzt, fürEndbenutzeristdasaberwenigsinnvoll.IhrBotmussdortsein,wo Ihre Benutzer sind: auf Skype, Slack oder GroupMe. Er sollperE-MailoderSMSantwortenkönnen.Odereinfachauf IhrerWebsite für Fragen aller Art zur Verfügung stehen. Alle dieseSzenarien deckt der Bot Connector ab. Microsoft hat nicht nurSchnittstellen zu den Kommunikationsplattformen („Kanäle“)entwickelt;inbebildertenSchritt-für-Schritt-AnleitungenwerdenauchdienotwendigenEinstellungendetailliertbeschrieben.EineIntegrationdesBotsinSlackistdadurchinwenigerals5Minutenerledigt (Abb. 5). Für die ausgewählten Kanäle stehen auchfertige HTML-Einbettungscodes zur Verfügung, um das Chat-

Page 66: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

ControlaufdereigenenWebsiteplatzierenzukönnen.

Abb.5:VerwendungdesBotsinSlack

FazitWarum nicht neue Benutzer mit einem Bot um dieVervollständigung des Userprofils bitten (wie bei Slackhervorragend gelöst)? Warum nicht einfache Aktionen durcheinenBotabwickelnanstattWartungsmaskenzubauen?WarumeinFAQnichteinmalanderslösen?

DasMicrosoft Bot Framework ist eine faszinierende Spielwiese.Nicht für jedeAnwendung sofort sinnvoll einsetzbar – aber aufalle Fälle einen Blick in die Zukunft wert. Viel Spaß und liebeGrüßeanIhrenerstenBot!

Page 67: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

RomanSchacherl(MVP)undDanielSklenitzkasindGründerderFirmasoftawaregmbhundentwickelnmitihremTeamindividuelleLösungenaufBasisvonMicrosoft-Technologien.BeidesindAutorenmehrerer

Fachartikel,nebenberuflichLehrendeanderFHHagenberg(Österreich)undalsSprecheraufEntwicklerkonferenzentätig.Siefindenihnunterwww.softaware.at

Page 68: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

DorotheaKolossaimInterview

„WirwerdenSprachinteraktionzwischenMenschundMaschinebaldalseinenganznormalenProzesserleben“EintypischesBeispielfürMaschinellesLernenistdieSpracherkennung.DienstewieSiri,GoogleNow,CortanahabenhierindenletztenJahrenenormeFortschritteerzielt–einenEinblickindieTechnikdieserSystemebietetderArtikel„EinBlickaufdasMicrosoftBotFramework“.DochwieweitistmannochentferntvomaltenTraum,dassMenschensichreibungslosmitMaschinenunterhaltenkönnen?Prof.Dr.DorotheaKolossaforschtanderRuhr-UniversitätBochumzumThemaSpracherkennungundkognitiveSignalverarbeitung.Wirhabensiegefragt,welcheHerausforderungenimBereichdermaschinellenSpracherkennungnochzulösensind,damiteine„natürliche“Mensch-Maschine-KommunikationüberdieSprachemöglichwird.“

JAXenter:DieIdee,Sprachemaschinellzuerkennen,gibtesschonlange.AlleinstießmanbisvorKurzemschnellandieGrenzendesMachbarenbzw.Nützlichen.ErstmitDienstenwieSiri,Cortana,GoogleNowscheintmaneinNiveauerreichtzuhaben,mitdemmanviaSpracherkennungauchimAlltagAufgabenerledigenkann.WasmachendieseneuenDiensteandersalsdiefrüherenLösungenzurmaschinellenSpracherkennung?

Dorothea Kolossa: Heute kommen für die maschinelleSpracherkennung erstmals alleVorbedingungen zusammen, dieman für einewirklich gute Erkennungsleistung benötigt: großeMengen an Sprachdaten, eine enorme Rechenleistung undSpeicherkapazität, und neue, flexiblere Sprachmodelle,beispielsweise durch den Einsatz neuronaler Netze, die heutesowohl für dieModellierung der Akustik als auch der Struktur

Page 69: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

derSpracheeingesetztwerden.

JAXenter:WiefunktionierensolcheDeepNeuralNetworks?

DorotheaKolossa:GanzprinzipiellgesprochensindDeepNeuralNetworks einfach regelmäßig strukturierte, nichtlineareFunktionen. Sie bestehen ausmehreren sogenannten Schichtenvon“Neuronen”–undjedes“Neuron”machtnichtsanderes,alsdass es alle seine Eingangssignale zunächst gewichtetaufsummiert und dann das skalare Ergebnis durch eineNichtlinearität schickt. Eine “Schicht” vonNeuronen kannmansich als Parallelschaltung von solchen Rechenelementenvorstellen, und das ‘Deep Neural Network’ ist einfach eineReihenschaltungvondiesenSchichten.

WasneuronaleNetzesoattraktivmacht,istdieMöglichkeit,siezu“trainieren”.

DasGanze istganzgrobandieStrukturierungvonbiologischenneuronalenNetzenangelehnt,woaucheinNeuronnurdannmiteinem großen Ausgangswert reagiert (bzw. “feuert”), wennhinreichendvieleseinerEingänge(seinerSynapsen)hinreichendstark aktiviert werden, und wo ebenfalls oft verschiedeneSchichtenderVerarbeitungaufeinanderfolgen.

WasneuronaleNetze soattraktivmacht, istdieMöglichkeit, sierecht effizient, z.B. mit dem sogenannten Backpropagation-Algorithmus,zu“trainieren”.EinNetzwerkistguttrainiert,wennseinefreienParameter–dieGewichte–soangepasstsind,dassesgenau die gewünschte Funktion erledigt, in der Welt derSpracherkennung also eine niedrige Fehlerrate erzielt. Unddadurch, dass neuronale Netze so viele freie Parameter und soeffektiveLernverfahrenhaben,lassensichmitihnen–aufBasisder vielen heute verfügbaren Trainingsdaten – auch sehr guteErkennungsleistungen erzielen; und je mehr Datenhinzukommen, desto besser lassen sie sich weiter auf dieAufgabeanpassen.

JAXenter:WassagtdieWissenschaftzudiesenDiensten–nutztmanindiesenmobilenSprachassistentenwissenschaftlicheState-of-the-Art-Methoden?OdersinddiewissenschaftlichenDiskurseundLösungsansätzeganzwoanders?

Page 70: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

Dorothea Kolossa: Viel der aktuellen Entwicklung in derSpracherkennung erfolgt tatsächlich genau bei den großenFirmen (Google, Microsoft, Nuance, …), oft in Kooperation mitUniversitäten.Hierzuwerden großeMengen an Trainingsdatengesammelt, gelabelt, und es fließen enorme Ressourcen in denAufbau dieser Datenbasen. Daher ist hier auch aus Sicht derUniversitäten eine Kooperation sehr wichtig, um kompetitivarbeiten zu können. Gleichzeitig ist aber natürlich bei denFirmen der Druck groß, immer die besten Erkennungsratenanzubieten, so dass ein enormer Bedarf an hochqualifiziertenForschern entstanden ist – und ein riesiges Interesse an allem,was das Potential hat, dieMethoden desmaschinellen Lernensgrundlegendvoranzubringen.InsoferngibtesaktuellspannendeEntwicklungen sowohl indenFirmenals auchandenUnis, dieabernatürlichaufdereinenSeitestärkervondemWunschnachEffizienzundErkennungsratenundaufderanderenSeitestärkervon demWunschnach fundamentalen Erkenntnissenmotiviertsind.

Fragen,diemomentanbeideSeitenbewegensind:

1. Wie ist es möglich, in Spracherkennungssystemen Ende-zu-Ende-Optimalität zu erreichen? Wie kann ich also alleKomponenteneinesErkennungssystems,vondenerstenStufenderSprachsignalverarbeitungbishin zudenModulen,dieander Interpretation der Nutzereingabe beteiligt sind, sooptimieren, dass insgesamt die höchste Nutzerzufriedenheitentsteht?

2. Wie kann man Erkenntnisse aus dem menschlichenSprachverstehenindiemaschinellenSystemebringen?LassensichdieneuronalenProzessebeimenschlichenHörern,die jaimmer noch die bei weitem größte Genauigkeit besitzen undmaschineller Erkennung klar überlegen bleiben, nochweitergehendverstehen,alsdasheutederFallist–undwennja, was lernen wir daraus für den Aufbau der nächstenGenerationvonSpracherkennernundDialogsystemen?

JAXenter:SiesindanderRuhr-UniversitätBochuminderArbeitsgruppeKOGNITIVESIGNALVERARBEITUNGtätig.WoranforschenSieaktuell?

Dorothea Kolossa: Diese beiden oben genannten Punkte sind

Page 71: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

auchbeiunswichtigeThemen.AufdereinenSeitearbeitenwirdaran, das menschliche Hören besser zu modellieren. Das tunwir einerseits im TWO!EARS-Projekt, das sich mit demHörverstehen von Menschen beschäftigt, und andererseits imICanHear-Projekt, in dem wir automatisch die VerständlichkeitvonSprachsignalenbewertenmöchten,zumBeispiel,umspäterin Hörgeräten die Signalverarbeitung so anpassen zu können,dass der jeweilige Gesprächspartner für die Hörgeräteträgermöglichstimmeroptimalzuverstehenist.

AufderanderenSeitemöchtenwiraberauchverstehen,wiedieModule eines Spracherkennungssystems optimalzusammenarbeitenkönnen,undwiewirsiesoanpassenkönnen,dass das Systemverhalten letztlichmaximal überzeugend wird.Zu diesem Zweck arbeiten wir momentan an einemgemeinsamen Verständnis von statistischen Methoden undneuronalenNetzen: StatistischeMethoden können auswenigenDaten solide und recht gut interpretierbare Ergebnisse liefern,sind aber nicht so erfolgreich wie neuronale Netze, wenn esdarum geht, sich mit immer mehr Daten immer weiter zuverbessern.DienatürlichenFragensinddannausunsererSichtdie, wie man neuronale Methoden mit wenigen Daten gutinitialisieren kann, und wie man außerdem die neuronalenSysteme zu interpretieren lernen kann – wie man also das“Verhalten” eines neuronalen Netzes verstehen und auf dieserBasisweiterverbessernkann.

JAXenter:WelcheHerausforderungengibtesimBereichdermaschinellenSpracherkennungnochzulösen,damiteine„natürliche“Mensch-Maschine-KommunikationüberdieSprachemöglichwird?

DorotheaKolossa:DieautomatischeSpracherkennunghatindenletztenJahreneinebeeindruckendeEntwicklunghingelegt–aberimmernochbrechendieErkennungsratenschnellein,wennwirdie Systeme in lauten oder halligen Umgebungen einsetzenmöchten.DamitdieSpracherkennungsonatürlichwird,dasswireinfach zu jeder Zeit Sprachbedienungen statt Touchpadsbenutzenmöchten,müssenrobusteSystemeentwickeltwerden,die ohneProblemeauch in schwierigenUmgebungen erkennenkönnen,wasgesagtwird.GleichzeitigmüssenwirunsaberauchmitPrivacy-Fragenbeschäftigen.Niemandmöchtewirklichgern,

Page 72: Dossier: Machine Learning - jaxenter.de · schriftlicher Genehmigung des Verlages. Eine Haftung für die Richtigkeit der Veröffentlichungen kann trotz Prüfung durch die Redaktion

dassjederzeitMicrosoftoderNuancemithört,wennerdasLichtein- oder ausschaltet – deswegen brauchen wir nach meinerEinschätzung Erkennersysteme, die lokal arbeiten, ohne je dieDatenauffremdeServerzuübertragen.HierfürsindmomentanauchdieRechenleistungunddieSpeicherkapazitätnochThemen,aberhierarbeitetjadieTechnologieentwicklungfüruns.

Niemandmöchte,dassjederzeitMicrosoftoderNuancemithört,wennerdasLichtein-oderausschaltet.

Insgesamt ist mein Eindruck der, dass wir auf einem sehrspannendenWegsind:DierasanteEntwicklungwirdwohlnochfür einige Jahre weitergehen, und ich denke, dass wir in nichtallzufernerZukunftSprachinteraktionalseinenganznormalenProzess erlebenwerden – und, sehr erfreulicherweise, dadurchaucheineMengedarüberlernen,wieMenschenundMaschinenihreUmweltverstehenkönnen.

JAXenter:VielenDankfürdiesesInterview!

DieFragenstellteHartmutSchlosser.

Prof.Dr.-Ing.DorotheaKolossaistseit2010alsLeiterinderArbeitsgruppeKognitiveSignalverarbeitunganderRuhr-UniversitätBochumtätig.DortbeschäftigtsiesichmitrobusterSprach-undMustererkennung,entwickeltalsoMethodenundAlgorithmen,umMustererkennung

auchinschwierigenundveränderlichenUmgebungeneinsetzbarzumachen.DiesesThemahatProf.KolossainvielenProjekten,zunächstinihrerDissertationanderTUBerlin,danninmehrerenForschungsaufenthalten,u.a.beiNTT(Kyoto),anderUniversityofHongKongund2009alsVisitingFacultyanderUCBerkeleybeschäftigt.MehralsachtzigPublikationenundPatenteundeinBuchzurobusterSpracherkennungsindimRahmendieserArbeitenentstanden,undaktuelleKooperationen,u.a.mitdemInternationalComputerScienceInstitute(ICSI)inBerkeley,zielendaraufab,dieheutebestehendeSpracherkennungstechnologiezuverlässigauchfürdenmobilenAlltagseinsatzzugestalten.