-
Die vorliegende Anmeldung betrifft ein Verfahren zur Identifikation, Verifikation und/oder Ermittlung der Leitungsmerkmale eines neuronalen Netzes.
-
Neuronale Netze (NN), auch als künstliche neuronale Netze bezeichnet, sind computerimplementierte Systeme, die eine Anzahl von sogenannten Schichten und Gewichten aufweisen. Die Schichten bilden die Grundstruktur des Netzes und weisen „Knoten“ auf, wobei die Knoten unterschiedlicher Schicht verknüpft sein können und die Kommunikation zwischen den Knoten durch die Gewichte reguliert wird. Die Gewichte können somit als eine Art Filter verstanden werden. Die Schichten, Knoten und Verknüpfungen der Knoten werden auch als „Architektur“ des neuronalen Netzes bezeichnet
-
Wenn ein neuronales Netz trainiert wird, dann werden zunächst die Gewichte mit vorgegebenen Werten initialisiert und dann in der Trainingsphase unter Verwendung von Trainings- und Testdaten (Eingangsdaten) in vielen Iterationen verfeinert.
-
Beim Training eines neuronalen Netzes wird häufig ein Backpropagation-Algorithmus verwendet, der in folgenden Phasen abläuft. Zunächst wird ein Eingabemuster angelegt und vorwärts durch das Netz propagiert, d.h. es werden sukzessive für die Knoten der verschiedenen Schichten Werte anhand einer verwendeten Funktion und der Eingabewerte und Gewichte für den jeweiligen Knoten berechnet. Die Ausgabe des Netzes wird dann mit dem bekannten, gewünschten Ausgabewert verglichen. Die Differenz der beiden Werte wird als Fehler des Netzes bezeichnet. Der Fehler wird nun wieder über die Ausgabe- zur Eingabeschicht zurück propagiert. Dabei werden die Gewichtungen der Verbindungen abhängig von ihrem Einfluss auf den Fehler geändert. Dadurch geschieht eine Annäherung an die gewünschte Ausgabe bei wiederholter Eingabe der Eingabewerte des Trainingsdatensatzes.
-
Das fertig trainierte neuronale Netz wird dann zur Berechnung (Vorhersage) von Ausgabewerten zu vorher unbekannten Eingabewerten verwendet.
-
Die Leistungsmerkmale eines neuronalen Netzes sind die Architektur (umfassend beispielsweise die Anzahl der Schichten, Anzahl der Knoten der verschiedenen Schichten, Verknüpfungen zwischen den Knoten etc.), sowie die Gewichte. Insbesondere die Leitungsmerkmale am Ende der Trainingsphase sind von Bedeutung, wenn das durch einen Anbieter trainierte und optimierte neuronale Netz anderen Anwendern zur Verfügung gestellt wird.
-
Bei der Verwendung neuronaler Netze ist es wünschenswert, dass die Herkunft und Leitungsmerkmale eines neuronalen Netzes für den Anwender nachvollziehbar bzw. verifizierbar sind. Insbesondere ist es wünschenswert, dass ein Anwender auf einfache Art erkennen kann, wenn ein neuronales Netz durch einen anderen Benutzer verändert wurde und somit evtl. nicht mehr den Herstellerangaben entspricht.
-
Aus der
WO 2016/043734 A1 ist ein Verfahren bekannt, bei dem ein neuronales Netz anhand eines vordefinierten „Wächter-Datensatzes“ verifiziert werden kann.
-
Aus
US 2016/0283842 A1 ist weiterhin ein Verfahren zum Trainieren eines neuronalen Netzes bekannt, bei dem die Gewichte in einer kodierten Form gespeichert werden um unberechtigte Zugriffe auf das neuronale Netz zu verhindern.
-
Es besteht aber weiterhin ein Bedarf an einfachen, kostengünstigen Verfahren zur Absicherung und Verifizierung neuronaler Netze, um unberechtigte Zugriffe und/oder Änderungen zu verhindern oder zumindest zu erkennen.
-
Diese Aufgabe wird durch die Merkmale der unabhängigen Ansprüche der vorliegenden Schutzrechtsanmeldung gelöst. Weitere vorteilhafte Ausführungsbeispiele sind durch die abhängigen Ansprüche definiert.
-
Das beschriebene Verfahren weißt die folgenden Schritte auf:
- - Erhalten des neuronalen Netzes sowie einer dem neuronalen Netz zugeordneten Identifikation,
- - Bestimmen der charakteristischen Eigenschaften des neuronalen Netzes,
- - Berechnen eines ersten Hashcodes anhand einer vorbestimmten Hashfunktion aus den charakteristischen Eigenschaften des neuronalen Netzes,
- - Erhalten eines der Identifikation zugeordneten zweiten Hashcodes aus einer sicheren Datenbank, und
- - Verifizieren des neuronalen Netzes durch einen Vergleich des ersten Hashcodes und des zweiten Hashcodes.
-
Für ein neuronales Netz wird somit ein Hashcode, auch als Hashwert bezeichnet, berechnet und an zentraler Stelle, beispielsweise in einer zentralen, sicheren Datenbank, zusammen mit einer Identifikation des zugeordneten neuronalen Netzes gespeichert.
-
Wenn nun eine Kopie des neuronalen Netzes verwendet werden soll, so kann der Hashcode der Kopie des neuronalen Netzes berechnet und mit dem an der zentralen Stelle für das zugehörige originale neuronale Netz gespeichertem Hashcode vergleichen werden. Wenn die beiden Hashcodes übereinstimmen, so wird davon ausgegangen, dass die Kopie des neuronalen Netzes dieselben Charakteristiken wie das originale neuronale Netz aufweist und dass keine Manipulation vorliegt.
-
Hashfunktionen können zur Sicherstellung von Datenintegrität verwendet werden. Hierbei werden charakteristische Werte eines Datensatzes (oder ggf. der gesamte Datensatz) durch eine Funktion (Hashfunktion) auf einen kleineren numerischen Wert abgebildet. Ein erster solcher Hashcode wird nach Erstellung des Datensatzes berechnet und dann an einer geschützten Stelle abgelegt.
-
Wenn später ein Nutzer den Datensatz verwenden will, kann der Nutzer ebenfalls den Hashcode des erhaltenen Datensatzes berechnen und diesen dann mit dem an der geschützten Stelle für diesen Datensatz abgelegten Wert vergleichen. Wenn die Werte übereinstimmen wird davon ausgegangen, dass der vom Nutzer verwendete Datensatz dem ursprünglichen Datensatz entspricht. Wenn die beiden Hashcodes jedoch nicht übereinstimmen, so wird darauf geschlossen, dass der Datensatz manipuliert wurde. Der Nutzer kann somit eine Manipulation erkennen und den Datensatz dann entsprechend nicht verwenden.
-
Bei Hashfunktionen ist im Allgemeinen zu beachten, dass diese im Allgemeinen nicht injektiv sind, das heißt dass mehreren verschiedenen Datensätzen derselbe Hashcode zugeordnet wird. Allerdings ist die Wahrscheinlichkeit gering, dass dieses zufällig passiert.
-
Eine Untergruppe von Hashfunktionen bilden kryptographische Hashfunktionen, die besondere Sicherheitseigenschaften haben. Insbesondere sind kryptographische Hashfunktionen kollisionsresistent, so dass es praktisch unmöglich ist für einen gegebenen Eingabewert einen zweiten Eingabewert zu finden, so dass die beiden Eingabewerte auf denselben Hashcode abgebildet werden. Kollisionen sind zwar auch bei kryptographischen Hashfunktionen prinzipiell möglich, aber das bewusste, absichtliche Generieren von kollidierenden Eingabewerten ist nur unter sehr hohen Rechenkosten möglich und somit praktisch ausgeschlossen. Vorzugsweise wird bei dem beschriebenen Verfahren eine kollisionsresistente Hashfunktion verwendet.
-
Das neuronale Netz kann vorzugsweise durch Herunterladen aus dem Internet, aus einer internetbasierten digitalen Vertriebsplattform, wie beispielsweise einem Appstore oder als Anhang einer Email erhalten werden. Auch andere digitale Übertragungsmöglichkeiten, beispielsweise unter Verwendung physischer digitaler Datenträger (CDs, USB Sticks, Speicherkarten etc.) sind möglich.
-
Weiterhin kann die Datenbank sich vorzugsweise auf einem zentralen sicheren Server oder in einer Cloud befinden. Die Datenbank kann weiterhin unter Verwendung eines „distributed Ledger“, beispielsweise eines Blockchain Algorithmus, registriert sein.
-
Vorzugsweise kann sich der Nutzer die charakteristischen Informationen des neuronalen Netzwerkes, die auch im Hashcode gespeichert bzw. abgebildet sind, anzeigen lassen. Somit ist das neuronale Netz keine Blackbox mehr, sondern die charakteristischen Informationen werden in einer transparenten Weise dem Nutzer zur Verfügung gestellt. Somit kann der Nutzer nachvollziehen wie das neuronale Netz trainiert wurde und welche Architektur bzw. Gewichte es aufweist. Somit können die in vielen Softwareprodukten, wie beispielsweise Fahrerassistentzsystemen für autonomes Fahren, eingesetzten neuronalen Netze verstanden und verifiziert werden.
-
Die beim Erstellen des Hashcodes verwendeten charakteristischen Daten des neuronalen Netzes können vorzugsweise auch Informationen zum Anbieter, Ersteller oder Entwickler des neuronalen Netzes beinhalten. Somit ändert sich der Hashcode sobald der eingetragenen Anbieter geändert wird. Es kann somit verhindert werden, dass jemand das neuronales Netz eines anderen Anbieters als eigenes Produkt verkauft.
-
Weiterhin ist es möglich, dass das Verfahren vor dem Erhalten des neuronalen Netzes und der zugeordneten Identifikation aus der Datenbank zusätzlich die folgenden Schritte umfasst:
- - Hochladen eines trainierten neuronalen Netzes auf eine der sicheren Datenbank zugeordneten Plattform,
- - Zuordnen einer Identifikation zu dem trainierten neuronalen Netz;
- - Bestimmen der charakteristischen Eigenschaften des trainierten neuronalen Netzes,
- - Berechnen eines Hashcodes anhand der vordefinierten Hashfunktion aus den charakteristischen Eigenschaften des trainierten neuronalen Netzes, und
- - Speichern des berechneten Hashcodes des trainierten neuronalen Netzes zusammen mit der Identifikation des trainierten neuronalen Netzes in der sicheren Datenbank;
- - wobei beim Herunterladen des neuronalen Netzes aus der Datenbank oder Plattform die charakteristischen Informationen des neuronalen Netzes, die im Hashcode gespeichert bzw. abgebildet sind, angezeigt werden.
-
Somit ist es möglich, dass ein vom Anbieter trainiertes neuronales Netz von diesem Anbieter zwecks Identifizierung und Verifizierung auf die entsprechende Plattform, welche der Datenbank zugeordnet ist, hochgeladen werden kann. Die für eine spätere Verifizierung notwendigen Werte, also die charakteristischen Eigenschaften und der daraus berechnete Hashcode, werden dann auf der Plattform oder direkt in der sicheren Datenbank berechnet. Somit ist die nachfolgende Verifizierung möglich, auch wenn das neuronale Netz später über einen anderen internetbasierten Anbieter vertrieben wird. Durch die Identifikation kann das heruntergeladene neuronale Netz mit den in der sicheren Datenbank gespeicherten Information abgeglichen werden.
-
Das beschrieben Verfahren kann auch als ein Computerprogrammprodukt implementiert werden. Das Computerprogrammprodukt ist hierbei dazu vorgesehen, in den internen Speicher eines digitalen Computers geladen zu werden und umfasst Softwarecodeabschnitte, mit denen die Schritte gemäß dem beschriebenen Verfahren ausgeführt werden, wenn das Produkt auf einem Computer ausgeführt wird. Somit kann die Verifizierung eines heruntergeladenen neuronalen Netzes automatisch oder semiautomatisch anhand von wenigen Knopfdrücken des Anwenders erfolgen.
-
Die Erfindung ist nachfolgend anhand der Figuren beschrieben. Es zeigen
- 1: eine schematische Darstellung eines neuronalen Netzes,
- 2 ein Ablaufdiagram des erfindungsgemäßen Verfahrens, und
- 3 eine exemplarische Tabelle mit Werten, die beim Berechnen des Hashcodes verwendet werden können.
-
1 zeigt ein neuronales Netz 100 welches aus einer Eingabeschicht 101, einer Ausgabeschicht 103 sowie einer dazwischenliegenden verborgenen Schicht 102 besteht. Zwischen den Knoten der Eingabeschicht 101 und den Knoten der verborgenen Schicht 102 bestehen unidirektionale Verbindungen 104 und zwischen den Knoten der verborgenen Schicht 102 und den Knoten der Ausgabeschicht 103 bestehen ebenfalls unidirektionale Verbindungen 105. Das neuronale Netz kann alternativ auch mehrere verborgene Schichten und mehr oder weniger Knoten pro Schicht umfassen.
-
Weiterhin alternativ kann das neuronale Netz auch ein rekurrentes bzw. rückgekoppeltes neuronale Netz sein, also ein Netz welches zusätzliche Verbindungen von Knoten einer Schicht zu Knoten derselben oder einer vorangegangenen Schicht auszeichnen.
Jede der Verbindungen 104, 105 kann mit einem Gewicht assoziiert sein, wobei das jeweilige Gewicht beeinflusst in welchem Umfang der Wert des jeweiligen Startknoten der unidirektionalen Verbindung den zu berechnenden Wert des zugeordneten Endknotens beeinflusst. Zusätzlich ist jedem Knoten der verborgenen Schicht 102 und jedem Knoten der Ausgabeschicht 103 jeweils eine Aktivierungsfunktion zugeordnet, die angibt wie der Wert des Knotens aus den gewichteten Werten der jeweiligen Eingabeknoten berechnet wird.
-
Das neuronale Netz wird anhand vordefinierter Werte initialisiert. Diese Werte können Informationen zur Architektur (Anzahl der Schichten, Anzahl der Knoten pro Schicht, Verbindungen zwischen den Knoten), sowie Informationen zu den verwendeten Aktivierungsfunktionen und den initialen Gewichten beinhalten.
-
Danach wird das neuronale Netz unter Verwendung eines Trainingdatensatzes „trainiert“, d.h. die Gewichte des neuronalen Netzes werden anhand der Trainingsdaten so optimiert, dass (bei überwachtem Lernen) die Eingabewerte möglichst genau auf die im Trainingsdatensatz vorgegebenen Ausgabewerte abgebildet werden, oder so dass (bei unüberwachtem Lernen) Muster der Eingabedaten besonders gut erkannt werden. Hierbei können für maschinelles Lernen übliche Verfahren wie Cross-Validierung verwendet werden, zur Optimierung bezüglich einer festgelegten Fehlermetrik.
-
Das Trainieren des neuronalen Netzes kann vorzugsweise unter Verwendung des in der Einleitung beschriebenen Backpropagations-Algorithmus und mit einer Vielzahl an Iterationen der Trainingsdaten erfolgen.
-
Das fertig trainierte neuronale Netz kann dann zur Vorhersage bzw. Berechnung von Ausgabewerten für neue, vorher unbekannte Eingabewerte verwendet werden.
-
Wenn das neuronale Netz fertig trainiert ist wird gemäß das hier beschriebenen Verfahrens durch den Ersteller oder Anbieter des neuronalen Netzes unter Verwendung einer vordefinierten Hashfunktion ein Hashcode für charakteristische Werte des trainierten neuronalen Netzes berechnet. Die charakteristischen Werte umfassen hierbei die Architektur des neuronalen Netzes, die verwendeten Gewichte sowie eine Identifikation des Anbieters des neuronalen Netzes. Weiterhin können optional Details zum verwendeten Trainingsverfahren und/oder Trainingsdatensatz bei der Berechnung des Hashcodes verwendet werden, beispielsweise können Metadaten des neuronalen Netzes eine Internetadresse an der die verwendeten Daten zu finden sind umfassen.
-
Die bei der Berechnung des Hashcodes verwendeten Daten sind jeweils aus dem neuronalen Netz entnehmbar.
-
Beispielsweise könnte der Hashwert auf Grundlage der folgenden Daten berechnet werden: Anzahl der Schichten, Anzahl der Knoten pro Schicht, Summe der Knoten, Summe der Gewichte etc. Alternativ können auch manche der verschiedenen Werte konkateniert werden, so dass vorzugsweise ein ganzzahliger Hashwert entsteht. Weitere Details zur Berechnung des Hashwertes sind nachfolgend mit Bezug auf 3 offenbart.
-
Der berechnete Hashcode wird dann zusammen mit einer Identifikation des neuronalen Netzes in einer sicheren Datenbank gespeichert, wobei diese sichere Datenbank beispielsweise Teil eines Blockchain Netzwerks ist.
-
Alternativ könnte die Berechnung des Hashcodes nach der Speicherung des neuronalen Netzes direkt in der Datenbank stattfinden, als zusätzliche Service der Datenbank.
-
2 zeigt nun die Verifizierung 200 des neuronalen Netzes durch einen Anwender. Das Verifizierungsverfahren umfasst die folgenden Schritte:
- Voraussetzung für das beschriebene Verfahren ist, dass der Hersteller das trainierte neuronale Netz samt Hashcode in der sicheren Datenbank gespeichert hat. Die Datenbank ordnet dem neuronalen Netz eine Identifikation zu.
-
Schritt 201: Erhalten des neuronalen Netzes sowie einer dem neuronalen Netz zugeordneten Identifikation, wobei das neuronale Netz von dem Anwender aus dem Internet heruntergeladen, beispielsweise von einer Webseite oder aus einer internetbasierten Vertriebsplattform, wie beispielsweise einem Appstore, wird oder auf eine andere Art digital an den Anwender übertragen wird, beispielsweise per Email oder durch einen digitalen Datenträger. Die dem Netzwerk zugeordnete Identifikation kann beispielsweise eine Internetadresse umfassen an der das neuronale Netz vom Anwender zur Verfügung gestellt wird, oder die Identifikation kann eine durch ein Blockchain Netzwerk oder einen anderen externen Anbieter vergebenen Identifikation sein.
-
Schritt 202: Bestimmen der charakteristischen Eigenschaften des neuronalen Netzes. Der Anwender kann nun aus dem neuronalen Netz die charakteristischen Eigenschaften wie Gewichte und strukturelle Merkmale (Architektur des Netzes) sowie Herstellerangaben extrahieren. Hierbei handelt es sich um Daten, die direkt aus dem neuronalen Netz entnommen werden können, die beispielsweise ausgegeben werden, wenn das neuronale Netz unter Verwendung bestimmter, vordefinierter Parameter ausgeführt wird. Im Normalfall ist für die Extraktion der Daten kein zusätzlicher Schlüssel erforderlich, zur Erhöhung der Sicherheit kann aber optional ein Schlüssel verwendet werden.
-
Schritt 203: Berechnen eines ersten Hashcodes anhand einer vorbestimmten Hashfunktion aus den charakteristischen Eigenschaften des neuronalen Netzes. Aus den extrahierten charakteristischen Eigenschaften des neuronalen Netzes kann der Anwender nun unter Verwendung einer vordefinierten Hashfunktion einen Hashcode der charakteristischen Eigenschaften berechnen. Hierbei wird vorzugsweise eine kollisionsresistente Hashfunktion verwendet, die es praktisch unmöglich macht einen zweiten Eingabewert zu finden, der denselben Hashcode wie ein vorgegebener Eingabewert ergibt.
-
Schritt 204: Erhalten eines der Identifikation zugeordneten zweiten Hashcodes aus einer sicheren Datenbank. Der Anwender lädt nun den der Identifikation des neuronalen Netzes zugeordneten Hashcode aus der sicheren Datenbank herunter. Die sichere Datenbank ist, beispielsweise durch einen Blockchain Algorithmus oder andere geeignete Sicherheitsverfahren, derart abgesichert, dass eine Authentizität des in dieser Datenbank gespeicherten Werte angenommen werden kann.
-
Schritt 205: Verifizieren des neuronalen Netzes durch einen Vergleich des ersten Hashcodes und des zweiten Hashcodes. Der vom Anwender für das vorliegende neuronale Netz berechnete Hashcode wird nun mit dem aus der sicheren Datenbank erhaltenen Hashcode verglichen. Wenn die beiden Hashcodes übereinstimmen, so kann aufgrund der Kollisionsresistenz der Hashfunktion und der Sicherheit der sicheren Datenbank davon ausgegangen werden, dass das vorliegende neuronale Netz dem vom Anbieter angebotenem neuronalen Netz entspricht und dass das neuronale Netz nicht manipuliert oder gehackt wurde.
-
Wenn die beiden Hashcodes jedoch nicht übereinstimmen, so liegt eine unerlaubte Veränderung des neuronalen Netzes vor und das neuronale Netz wird in diesem Fall durch den Anwender nicht weiterverwendet. Weiterhin kann der Anwender dem Anbieter melden, dass das neuronale Netz manipuliert wurde.
-
3 zeigt eine Tabelle 300, die verschiedene numerische Werte zeigt, die bei der Berechnung des Hashcodes berücksichtigt werden können. So können Informationen über die Architektur des neuronalen Netzes (Anzahl der Schichten, Anzahl der Knoten insgesamt, Anzahl der Knoten in den einzelnen Schichten, Struktur des Graphs etc.) berücksichtigt werden. Weiterhin werden die Gewichte berücksichtigt. Da die Gewichte meist reelle Zahlen zwischen 0 und 1 sind, die üblicherweise normiert sind, können die Gewichte entweder gerundet oder (partiell) aufsummiert werden. Beispielsweise können die größten oder kleinsten Gewichte pro Schicht summiert werden, oder es werden jeweils die ersten zwei Nachkommastellen berücksichtigt etc. Des weiteren können Informationen zum Anbieter, beispielsweise in Form einer Registrierungsnummer, verwendet werden. Die verschiedenen numerischen Werte können dann durch die Hashfunktion kombiniert werden, beispielsweise anhand einer gewichteten Summe und/oder durch Konkatenation der einzelnen Werte. Auch ist es möglich die „Rohdaten“ zunächst vorzuverarbeiten, beispielsweise durch Diskretisierung, Summierung und/oder Konkatenation, und die resultierende Zahl dann durch eine bekannte Hashfunktion in einen Hashcode zu überführen. Bekannte kryptographische Hashfunktionen sind beispielsweise das Merkle-Damgärd-Verfahren, SHA, Whirlpool oder andere Hashfunktionen, wie sie beispielsweise auf „https://de.wikipedia.org/wiki/Kryptographische_Hashfunktion“ beschrieben sind.
-
Alternativ kann als Hashcode auch ein nicht-numerischer Wert, beispielsweise eine Zeichenkette verwendet werden.
-
Das beschrieben Verfahren kann als ein Computerprogrammprodukt implementiert werden, wobei das Computerprogrammprodukt in den internen Speicher eines digitalen Computers geladen werden kann und Softwarecodeabschnitte umfasst, mit denen die Schritte gemäß dem beschriebenen Verfahren ausgeführt werden, wenn das Produkt auf einem Computer ausgeführt wird. Somit ist eine automatische oder semiautomatische Verifizierung des heruntergeladenen neuronalen Netzes möglich.
-
Wenn die bei der Erstellung des Hashcodes verwendeten charakteristischen Werte Angaben zum Anbieter umfassen, so kann durch das beschriebene Verfahren eine unberechtigte Nutzung bzw. ein unberechtigter Verkauf des neuronalen Netzes nachgewiesen und ggf. verhindert werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- WO 2016/043734 A1 [0008]
- US 2016/0283842 A1 [0009]