Netidee Blog Bild
Machine Learning und iOS
Core ML 3: Möglichkeiten und Herausforderungen (30.01.2020)
Förderjahr 2019 / Stipendien Call #14 / ProjektID: 4407 / Projekt: Mail authorship verification and phishing recognizing with machine learning on iOS

Im Sommer 2019 hat Apple Version 3 des Machine Learning Frameworks Core ML vorgestellt. Will man auf iOS eine App mit Machine Learning entwickeln und nicht auf einen Webservice zurückgreifen, so ist die Verwendung von Core ML eine Möglichkeit künstliche Intelligenz in eine App zu integrieren. Auch die App meiner Masterarbeit verwendet dieses Framework.

Mit Core ML 3 ist nun auch sogenanntes on-device Learning möglich. Das heißt die App lernt direkt am Handy, ohne dass Daten an einen Server gesendet werden, dazu. Gerade bei der Überlegung Machine Learning für die Verifizierung von Autorschaften zu nutzen, ist dieses on-device Learning unausweichlich, da jede App-Instanz bzw. jeder User ein persönliches Machine-Learning-Model (= Datenset mit dem die Algorithmen arbeiten können) benötigen, um die ganz persönlichen Kontakte und deren Mails darin abzubilden. Sprich, der Prozess ist, zuerst anhand alter Mails, zu "erlernen" wie Autoren schreiben und dann mit diesen Daten neue Mails bzw. deren Autoren zu verifizieren. 

Jedoch klingt on-device Learning mit Core ML 3 vielversprechender als die Erfahrung es dann zeigte. Während der Entwicklung der App, fand ich heraus, dass Core ML 3 nur zwei Algorithmen für das on-device Learning unterstützt. Daher musste ich den "besseren" Algorithmus für meine Problemstellung wählen. Das war in diesem Fall der KNN (k-nearst neighbor). Dieser basiert auf Vektoren, welche jeweils ein Datenstück repräsentieren. In meinem Fall steht jeder Vektor für eine Mail. All diese Vektoren aller Mail werden gespeichert und um nun eine unbekannte Mail zu klassifizieren, wird diese ebenfalls als Vektor dargestellt und dann die Abstände der vorhandnen Vektoren zu diesem gegebenen Vektor bestimmt (meist als euklidische Distanz). Wurden alle Distanzen berechnet, werden jene k (k = eine vorher definierte Anzahl) nächsten (also mit kürzester Distanz) Vektoren herangezogen für die Klassifizierung der neuen Mail. Da jedem Vektor ein Label zugeordnet ist (in meinem Fall Name des Autors), kann man bestimmen welches Label am häufigsten in dieser Auswahl an k Vektoren vorhanden ist. Mit diesem Label wird schlussendlich die gegebene Mail klassifiziert.

Nun arbeitet der KNN mit nummerischen Vektoren, aber Mails sind überlicherweise Texte. Daher musste ich einen Weg finden aus einen Text als eine Reihe von Nummern zu repräsentieren. Dabei nutze ich Erkenntnisse aus der forensischen Linguistik. Es gibt diverse statistische Ansätze, um Features für die Verifizierung von Autorschaften zu gewinnen. Konkret, werden statistische Werte aus einem Text ermittelt. So wird der relative Anteil der verschiedenen Wortformen, wie Nomen oder Verben, bestimmt oder die durchschnittliche Satzlänge. Insgesamt konnte ich auf diese Art und Weise 21 nummerische Werte für jede Mail bestimmen und diese als Vektoren für den KNN speichern. 

Mit diesem Meilenstein ist inzwischen die Implementierung der App abgeschlossen. Neben Core ML 3 wird uClassify, ein Webservice, für Machine Learning verwendet, um sich nicht nur auf ein System zu verlassen bzw. zu evaluieren, welches genauere Ergebnisse erzielt. Diese Evaluierungen sind gerade in Arbeit.

Christian Finker

Profile picture for user Christian Finker
Website: https://christianfinker.eu

Skills:

Webentwicklung
,
mobile Apps iOS
,
Machine Learning
,
PHP
CAPTCHA
Diese Frage dient der Überprüfung, ob Sie ein menschlicher Besucher sind und um automatisierten SPAM zu verhindern.
    Datenschutzinformation
    Der datenschutzrechtliche Verantwortliche (Internet Privatstiftung Austria - Internet Foundation Austria, Österreich) würde gerne mit folgenden Diensten Ihre personenbezogenen Daten verarbeiten. Dies ist für die Nutzung der Website nicht notwendig, ermöglicht aber eine noch engere Interaktion mit Ihnen. Falls gewünscht, treffen Sie bitte eine Auswahl: