Ein neuronales Netz trainieren, sodass es wie Shakespeare schreibt

In diesem Beitrag stelle ich ein kleines Python/NLP (Natural Language Processing) Projekt vor, bei dem ich ein neuronales Netz (GPT2) darauf trainiert habe, kleine Szenen zu verfassen, die nach dem Autoren William Shakespeare klingen.

Dabei bin ich der Anleitung von Max Woolf (Data Scientist bei Buzzfeed) gefolgt, der auf Github eine Anleitung (und eine Library) erstellt hat, die das Trainieren eines der fortschrittlichsten neuronalen Netze der Welt einfach macht.

Damit das bereits trainierte neuronale Netz nach Shakespeare klingt, wurde es mit dem Text »The Tragedy of Coriolanus« feingetuned. Es wurde also nicht nur mit englischer Literatur gefüttert, sondern zum größten Teil mit einer Vielzahl von Texten.

Ich selbst kenne das Werk nicht, meine Freundin ist jedoch Theaterwissenschaftlerin und konnte mich ein wenig in die Story einführen. Sie war auch diejenige, die später einschätzen konnte, ob die neuen, generierten Texte auch nach Shakespeare (und Coriolanus) klingen.

Disclaimer: Ich verzichte hier auf eine zu technische Darstellung des Projektes. Das können andere kompetenter erklären und ist für die explorative Anwendung keine nötige Voraussetzung. Es sei nur gesagt, dass ich u.a. aufgrund der Dauer des Trainings und meinem doch etwas schwachen MacBook 12“ eher zu wenig trainiert habe als zu viel. Daher sind die Texte eher wild, als zu nah am Original. Stichwort: underfitting statt overfitting.

Was mich daran fasziniert

  1. Ich selbst habe fast keine Ahnung von Shakespeare.
  2. Der Computer bekommt keine Anweisungen oder Regeln vorgelegt.
  3. Metaphorisch gesprochen, schaut er sich den Text an und erkennt selbständig Regeln.
  4. Er verbindet den Text mit Inhalten, die er bereits kannte, um Neues zu erschaffen.

Die neuen Texte

Die Erstellung eines neuen Textes dauert nur ein paar Minuten. Ich habe mal den ersten und zweiten meiner generierten Texte hier aufgeführt, um Gemeinsamkeiten zu entdecken. Denn das neuronale Netz erklärt sich nicht selbst. Der erste trägt wohl den Titel »‚Tis the holy of holies«, der zweite beginnt mit »Cousin of Lyons«.

‚Tis the holy of holies,
And the holy of holies not ignorant,
That all be known to be known.

QUEEN ELIZABETH:
My lord, there is a man in this house
That hath the height of a man.

KING RICHARD III:
Balearic, son, ‚tis thy son,
Which at the time of our redemption
Made the proud and duke of Gloucester proud.

KING RICHARD III:
Ay, my lord, but thy character is too strong,
For now thou must not rise again to be king.

FLORIZEL:
How shall I stop thee, even so?

QUEEN ELIZABETH:
What doth’t thou, my lord?

FLORIZEL:
I am the prince of this land, and all the land;
And, as I say, I have no trusty powers
To stop thee, unless thou be king.

KING RICHARD III:
Alas, my lord, thou art incapable.

FLORIZEL:
Here is the first bulwark of thy throne:
And, as it were, thou liest not to entreat.

QUEEN ELIZABETH:
Happily, my lord, we have made thee our king.

FLORIZEL:
Of the fathers of our country;
Have thou the strength to make us our king;
And thou, our prince, our king.

KING RICHARD III:
And, as thou hast the grace to make us our king,
And thou, thyself, our king, our king!

FLORIZEL:
How long shall we stand this way,
And how long shall thou play this fruitless part?

QUEEN ELIZABETH:
How long shall we stand this way,
And how long shall thou play this fruitless part?

FLORIZEL:
I have the power, my lord, to make thee our king
And thou shalt have the power, my lord, to make thee our king.

KING RICHARD III:
I have the power, my lord, to make thee our king;
And thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
Thou hast the power, my lord, to make thee our king;
And thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
I have the power, my lord, to make thee our king;
And thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
I have the power, my lord, to make thee our king,
And thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
I have the power, my lord, to make thee our king;
And thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
My lord, thou shalt have the power, my lord, to make thee our king.

KING RICHARD III:
I cannot help myself.

FLORIZEL:
My lord, thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
My lord, thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
My lords, thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
My lord, thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
My lord, thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
My lord, thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
My lords, thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
My lords, thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
My lords, thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
My lord, thou shalt have the power, my lord, to make thee our king.

FLORIZEL:
My lord, thou shalt have the power, my lord, to make thee our king.

QUEEN ELIZABETH:
My lords, thou shalt have the power, my lord

Cousin of Lyons
To the queen’s love
That got her love, and made her wedded.
She shook the queen’s hand, and cast her eyes
In the fiery place.

KING RICHARD III:
Ah, dear queen,
I am the king; what, my good lord?

NORTHUMBERLAND:
Marry, my good lord,
You are a king, and my good lord,
I have done a great service to your majesty.

KING RICHARD III:
What, is my good lord dead?

NORTHUMBERLAND:
No, sir, I am alive.

KING RICHARD III:
My good king,
Marry, look you’re dead,
And I am the king’s good king,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
And my good lord,
and my good lord,
And my good lord,

KING RICHARD III:
What, are you dead?
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am alive, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

NORTHUMBERLAND:
I am dead, my good lord.

KING RICHARD III:
What, are you dead?

Überlegungen

Die Form wurde erkannt: Er beginnt mit einem Titel »’Tis the holy of holies« bzw. »Cousin of Lyons« und mit einer kleinen Einleitung. Darauf folgt die Form eines Gespräches, bei dem erst der Name des Sprechenden genannt wird (in Großbuchstaben) einem Doppelpunkt und anschließend einem Satz.

Die Texte ergeben noch nicht so viel Sinn, aber ein paar Sätze passen. Außerdem verliert sich der Text ab einer gewissen Länge in Wiederholungen. Man könnte meinen, dass er die ausweglose Spirale als King Richard III mit der Aussage »I cannot help myself« selbst kommentiert. Der zweite Text ist klar vom Tod dominiert. Nach einer manischen »And my good Lord« Phase, stirbt NORTHUMBERLAND. Daraufhin liefern sich beide eine Sterbeszene, wie man wie als Klischee des Theaters kennt: Ewige Sterbeszenen, in denen sehr dramatisch über das eigene Vergehen gesprochen wird. Wie ein Mantra wird es ständig wiederholt – was ich persönlich wieder ganz lustig finde, wenn man sich vorstellt, dass zwei Schauspieler*Innen diesen Text wirklich sprechen würden.

Next Steps

In einem nächsten Schritt des Python-Projektes, möchte ich eine andere Textvorlage nutzen und die generierten Texte zur weiteren Verarbeitung nutzbar machen. Fast klassisch wäre die Idee eines Twitter-Bots, der täglich einen von einem Computer generierten Satz sagt. Mal sehen, was mir dazu einfällt.


Wenn man erleben möchte, was mit dieser Technologie alles künstlerisch möglich ist, sollte man sich Prometheus unboud von den Cyberräubern anschauen.

Update 21.4.20

Um das Training des neuronalen Netzes zu verbessern und nicht mehr von meinem lokalen MacBook abhängig zu sein, habe ich das Python Script in die Google Cloud verlegt. Nach einer Anmeldung erhält man von Google 300$, die man in Google investieren kann – ohne Folgekosten. Also habe ich eine virtuelle Maschine erstellt (quasi ein Computer in der Cloud) und dort alles so eingerichtet, dass das Script läuft. (Das hat mich ganze 3 Tage trial & error gekostet. Letztlich ließ sich das Problem immer mit mehr Rechenleistung lösen.) Dort habe ich das Netz nun nicht mehr nur 100 sondern 1.000 Mal trainieren lassen, was das Netz verbessern sollte. Jetzt kann ich außerdem 24/7 Text generiert werden, den ich weiterverwenden kann.

Der neue, verbesserte Text »aus der Cloud«:

You must not move your eyes
From that which seem’d so to be seen
By those whom you plainly are opposed
To me and your fearful drift.
Yet, heavens! it winds with me!

FLORIZEL:
Who’s there?

Servant:
The duke.

PERDITA:
Good soldier, a moiety
Good soldier, a moiety.

FLORIZEL:
He is upon deck,
Before we can make a move of him.

DUKE VINCENTIO:
Let’s be strong and appear on him.

PERDITA:
First, know his function.
A moiety, by that I know not how
To put a vessel to sea;
But that I know how to ship it to
The coast: he charges no blows,
But does everything in the name
Of the god, my god, my supreme.

PERDITA:
Becomes he most divine?

DUKE VINCENTIO:
I think not, for that I know not how
He is created. When created, by some divine
Correction, all gross, in an unquiet
Age, where no light is cast, he forms
The form of an engine, and blasts devils
With nimble brains; in any ballad, no less
Than when he was young; when sad, sad, sad
As I am; as angry and silly,
Without any form of subsistence,
But as my sorrow can be received
At least into some simple form.

PERDITA:
O my sonorous,
What art thou, that art thus obscured with
This mask so faintly painted? I say thou art
But a duke, and that there lie
None but the duke’s son and heir; that’s
A ransom for all the kingdoms I possess.

DUKE VINCENTIO:
Thou liest.

PERDITA:
There’s a plot to that effect against me.

DUKE VINCENTIO:
There is.

FLORIZEL:
Dost hast thou heard?

DUKE VINCENTIO:
I have.

PERDITA:
In good time.

DUKE VINCENTIO:
Here is the duke’s son and heir.

PERDITA:
And what is it?

DUKE VINCENTIO:
A bargain, ho, in faith for a husband.

DUKE VINCENTIO:
A fair bargain, and you will give him, if
He shall take you for a knave.

PERDITA:
I’ll use you for a word: he is not unchallenged,
By any countenance more divinely guided
Than can the fustian in his journey.

DUKE VINCENTIO:
Wert thou the friar, I would insinuate;
When thou camest in, and showed courtesy,
What were thy wages?

PERDITA:
I paid my taxes in earnest; and have since
Served as a petitioness to all my letters,
As being received by the duke’s majesty
From Cominius Barnardine, Cominius
‚Gentleman, delivered to your majesty.

DUKE VINCENTIO:
I know your good will, and I repent my lies.

PERDITA:
No more of this; ‚tis nothing; grant it me.

DUKE VINCENTIO:
‚Tis but a disguised bargain: let this be
An honest and shallow lie, not admitted into
The highest dignity, but let it be
Given on consul to testify your honesty.

PERDITA:
I will confess it; it was not a disguised
Agreement: the duke’s majesty indeed
Did deliver it to me; but the lie is stale.

DUKE VINCENTIO:
You have deliver’d me with a lie?

PERDITA:
Yes, by your honor.

DUKE VINCENTIO:
Show me the prince, the dignity of it,
The nature of his power: give me not
The trumpery of it.

PERDITA:
You have stuff’d me with a lie
Till now you had rid yourself with a lie;
You have mock’d me with a trumpery
Forerunning a fashion; you have denied me
My sacred duty; you have denied the duke
His due by rebellion fit for the earth;
You have denied the nobility of it;
And now you give me ground with a lie
That should stand you proof.

Yippie! Keine Endlosschleifen und Wiederholungen mehr!

1 thought on “Ein neuronales Netz trainieren, sodass es wie Shakespeare schreibt

Comments are closed.