# Machine Learning

**URL:** <https://community.fablab-cottbus.de/t/machine-learning/330>\
**Category:** Chaostreff Cottbus\
**Created:** [12. November 2022 um 12:40 UTC](https://community.fablab-cottbus.de/t/machine-learning/330 "2022-11-12T12:40:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Marcel](https://community.fablab-cottbus.de/letter_avatar_proxy/v4/letter/m/71e660/32.png) [@Marcel](https://community.fablab-cottbus.de/u/Marcel)\
**Post date:** [12. November 2022 um 12:40 UTC](https://community.fablab-cottbus.de/t/machine-learning/330/1 "2022-11-12T12:40:08Z")

</div>

Empfohlenes Buch: Aurelien Geron, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow  
Github mit den Beispielen: [GitHub - ageron/handson-ml2: A series of Jupyter notebooks that walk you through the fundamentals of Machine Learning and Deep Learning in Python using Scikit-Learn, Keras and TensorFlow 2.](https://github.com/ageron/handson-ml2)  
Oder: [https://www.deeplearningbook.org](https://www.deeplearningbook.org)  
Übersicht: [Machine learning - Wikipedia](https://en.wikipedia.org/wiki/Machine_learning)

# Software

Python mit

- scikit-learn
- tensorflow
- scipy
- numpy
- pandas

# Was ist KI?

Eine Sammlung von oft statistischen Ansätzen, um Zusammenhänge in Daten zu finden. Dabei wird vorausgesetzt, dass die Daten schon verarbeitet sind (Parameter bzw. Feature extraction).  
Eingabedaten: Tabelle mit Parametern (Werte, die die Daten beschreiben) → Lösung

 ![image](https://community.fablab-cottbus.de/uploads/default/original/1X/b57cf37a4764a1ab3a0d270ca6ff4ddea34d3ade.png)

Bei Neuronalen Netzen (NN) wird die Funktion des menschlichen Nervensystems mathematisch nachgebildet. Es können Auswertefunktionen in das Netz eingebunden werden (Convolution, Faltung), so dass Sensordaten nicht vorverarbeitet werden müssen.  
Eingabedate:  
Fully-connected layer: Tabelle mit Parametern (Werte, die die Daten beschreiben) → Lösung  
CNN: Analoge Signale, Bilder, Videos, …

 ![image](https://community.fablab-cottbus.de/uploads/default/original/1X/e65f331a60dc8dd51d98047f679cef180a20692a.png)

# Schlagworte

**Supervised vs. unsupervised** : Man gibt die Lösung vor vs. es das Modell muss selber Lösungen finden  
**Reinforcement learning** : Das Modell macht zufällig Sachen und bekommt ein Feedback, ob es gut oder schlecht war.

[![](https://community.fablab-cottbus.de/uploads/default/original/1X/434984e23edde3f2f406d99699e998722095a697.jpeg "MarI/O - Machine Learning for Video Games") ](https://www.youtube.com/watch?v=qv6UVOQ0F44)

**Classification vs. Regression** : Ergebnisse sind Klassen vs. genaue Werte. Scheint Morgen die Sonne oder gibt es Wolken? vs. ist es Morgen 20.0°C, 20.1°C, 20.2°C, …?  
**Online vs. offline** : Daten werden in Echtzeit generiert vs. dar Datensatz liegt als Datei vor.  
**Transfer learning** : Ein NN wird mit Daten trainiert. Einige Layer werden eingefroren (es ist kein Training mehr möglich) und wird dann mit anderen Daten trainiert. Das Modell wird auf einen Anwendungsfall trainiert und dann auf einen anderen übertragen. Meisten werden die CNN, LST, RNN Layer eingefroren und nur die fully-connected layer neu trainert.  
**Anomaly detection** : Die KI lernt wie gute Messwerte aussehen und kann erkennen, wenn die aktuellen Messwerte weit von den guten abweichen.  
**Deep AI** : KI, die ein Bewusstsein hat und moralische Entscheidungen treffen kann. Nur für SciFi Literatur interessant. In realen Anwendungen aktuell nicht relevant.

# Ansätze

## Fuzzy Logic

Ursprung der ML Ansätze. Daten werden verarbeitet und Parameter werden bestimmt. Dann wird Anhand der Parameter eine Lösung gebildet.  
Beispiel: Eine Bohrmaschine wird mit einem Mikrofon überwacht. Aus den Sensordaten wird die dominante Frequenz bestimmt. Aus Versuchen hat sich ergeben, dass die Frequenz normalerweise um 5kHz liegt, aber auf 10kHz steigt, wenn die Maschine nicht richtig behandelt wird. Nun lässt sich mit folgendem Pseudocode eine Warnsoftware gestalten:

```auto
if Frequenz < 7500:
    alles_gut()
else:
    stopp()

```

Die Grenze wurde mit 7.5kHz einfach in die Mitte der beiden Frequenzen gelegt.

Um diese Grenze besser zu bestimmen oder das System genauer zu machen sind mehr Sensoren und Messungen notwendig. Es können natürlich auch mehr als 1 Parameter aus den Sensordaten berechnet werden. Nutzt man z.B. 1 Mikrofon, 1 3-Achsaccelerometer und 1 Strommessung aus denen man jeweils 20 Parameter bestimmt, erhält man 5\*20=100 Parameter. Man hätte also eine if-else Orgie, in der 100 Werte geprüft werden müssen.  
Damit man das nicht von Hand machen muss gibt es bessere Ansätze.

## Machine Learning - Statistisch (scikit-learn)

Grundgedanke wie beim Fuzzy Logic, aber alles wird anhand der gegebenen Daten eigenständig berechnet.

**Random Forest Classifier**  
Aus den Parametern und Schwellwerten wird ein zufälliger Entscheidungsbaum generiert.

 ![image](https://community.fablab-cottbus.de/uploads/default/original/1X/0703fd71a950cdb2672b8391994d709fa76a54ae.png)  
Um das Ergebnis zu verbessern wird nicht nur 1 Baum, sondern mehrere berechnet (Wald). Das am meist genannte Ergebnis der einzelnen Bäume ist das Ergebnis des Waldes.

**K-nearest neighbor**  
Die Daten werden in einem X-dimensionalem Diagramm angeordnet, wobei die X die Anzahl der Parameter ist. Bei neuen Datenpunkten wird gezählt, welcher bekannte Punkt am meisten in der nähe liegt.

 ![image](https://community.fablab-cottbus.de/uploads/default/original/1X/96d66c64be5cb9c65c0b30c3f3c9149a28e2714f.png)

**Support Vector Classifier**  
Die Daten werden in einem X-dimensionalem Diagramm angeordnet, wobei die X die Anzahl der Parameter ist. Aus diesen Daten werden die Grenzen bestimmt. Vorteil gegenüber KNN: Nicht-lineare Verhalten können abgebildet werden. Bei neuen Datenpunkten wird geprüft, auf welcher Seite der Grenzen der Datenpunkt liegt und somit welche Kategorie er zugeordnet wird.

 ![image](https://community.fablab-cottbus.de/uploads/default/original/1X/3d3cad2d1871ea6dc3580b40888acb0d4bfbbaf0.png)

## Deep Learning - Neuronale Netze (Tensorflow)

**DNN / fully-connected layer**

[![](https://community.fablab-cottbus.de/uploads/default/original/1X/69fa3dc7d1c128761428fc34113ef35f210a82fc.jpeg "But what is a neural network? | Deep learning chapter 1") ](https://www.youtube.com/watch?v=aircAruvnKk)

DNN bestehen aus einem Input Layer, mehreren Hidden Layern und einem Output Layer. Das Output Layer wird über die z.B. softmax Aktivierungsfunktion berechnet. Das Neuron mit der höchsten Zahl entspricht dann der der Daten zugeordneten Kategorie.

 ![image](https://community.fablab-cottbus.de/uploads/default/original/1X/aa76169dede60034134e9c3282b09c5631656b26.jpeg)  
Für jedes Neuron in den Hidden Layern wird für jeden Input ein Koeffizient und Bias berechnet. Der Output ist eine Zahl.

**CNN / convolutional layer**

> **[Image Classification in CNN: Everything You Need to Know](https://www.upgrad.com/blog/image-classification-in-cnn/)**
>
> Do you ever wonder how your picture is seen by the computer, for which it’s just another input? Read this article to learn all about image classification as used in CNN.

[![](https://community.fablab-cottbus.de/uploads/default/original/1X/ff35154c2b25ee6e81e68c71d2045325c0cdc091.jpeg "But what is a convolution?") ](https://www.youtube.com/watch?v=KuXjwB4LzSA)

Berechnet eine Faltung mit einem oder mehreren Kernel. Die Kernel werden dabei von einem Algorithmus eigenständig bestimmt und optimiert. Der Output ist ein Array von Anzahl Kernel x Verschiebungsschritte Kernel mit Zahlen die angeben, wie gut der Kernel an der Stelle in das Eingangssignal passt. → Mustererkennung und wo wird welches Muster in einem Audio- bzw. Bildsignal erkannt.  
Weitere Auswertung und Ergebnisbildung über fully-connected layer.

**RNN / recurrent layer**

> **[Understanding LSTM Networks -- colah's blog](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)**

Sucht eigenständig wiederkehrende Muster in Signalen über Erinnern/Vergessen. Dynamischer als CNN, aber mehr Rechenaufwand.  
Weitere Auswertung und Ergebnisbildung über fully-connected layer.

**GAN / General Adversarial Networks**

> **[My First GAN](https://jaketae.github.io/study/gan/)**
>
> Generative models are fascinating. It is no wonder that GANs, or General Adversarial Networks, are considered by many to be where future lies for deep learning and neural networks.

Können neue Daten anhand von Trainingsdaten schaffen.  
Es werden 2 Netzte trainiert. Eines, was z.B. Boote in Bildern erkennt, und eins, welches neue Bilder mit Booten anhand von bekannten Bildern erstellt. Das Ziel des erstellenden Netzes ist es, das prüfende Netz davon zu überzeugen, dass ein Boot im Bild ist.

**Hilfslayer**  
Pooling, Dropout, Concatenate, Flatten, …

> **[Module: tf.keras.layers  |  TensorFlow v2.16.1](https://www.tensorflow.org/api_docs/python/tf/keras/layers/)**
>
> DO NOT EDIT.

---

<div class="post-metadata">

**Author:** ![Christian\_H](https://community.fablab-cottbus.de/letter_avatar_proxy/v4/letter/c/7993a0/32.png) [@Christian\_H](https://community.fablab-cottbus.de/u/Christian_H)\
**Post date:** [20. November 2022 um 18:12 UTC](https://community.fablab-cottbus.de/t/machine-learning/330/2 "2022-11-20T18:12:13Z")

</div>

Das Buch gibt es online, einfach zu finden, oder mich fragen.

---

<div class="post-metadata">

**Author:** ![Marcel](https://community.fablab-cottbus.de/letter_avatar_proxy/v4/letter/m/71e660/32.png) [@Marcel](https://community.fablab-cottbus.de/u/Marcel)\
**Post date:** [8. Dezember 2022 um 17:32 UTC](https://community.fablab-cottbus.de/t/machine-learning/330/3 "2022-12-08T17:32:30Z")

</div>

Sichtbar gemacht, am 8. Dezember 2022 um 17:32 UTC



---

<div class="post-metadata">

**Author:** ![ron](https://community.fablab-cottbus.de/user_avatar/community.fablab-cottbus.de/ron/32/64_2.png) [@ron](https://community.fablab-cottbus.de/u/ron)\
**Post date:** [11. Dezember 2022 um 20:30 UTC](https://community.fablab-cottbus.de/t/machine-learning/330/4 "2022-12-11T20:30:17Z")

</div>

Vielen Dank, Marcel, für die interessante Zusammenfassung und die weiterführenden Links.

---

<div class="post-metadata">

**Author:** ![ron](https://community.fablab-cottbus.de/user_avatar/community.fablab-cottbus.de/ron/32/64_2.png) [@ron](https://community.fablab-cottbus.de/u/ron)\
**Post date:** [11. Dezember 2022 um 21:09 UTC](https://community.fablab-cottbus.de/t/machine-learning/330/5 "2022-12-11T21:09:44Z")

</div>

Was unsere weiterführende Diskussion am Vortragsabend betrifft, wollte ich nochmal ein paar Links teilen.

Aktuell werden ja ein paar (kommerzielle?) generative AIs gehypt:

### StableDiffusion

> **[Stable Diffusion Online](https://stablediffusionweb.com)**
>
> Stable Diffusion is a deep learning model that generates images from text descriptions. Use Stable Diffusion online for free.

Input: Textuelle Beschreibung  
Output: photo-realistisches Bild

Gibt auch einige Offline-Varianten davon, z.B. [Diffusion Bee](https://diffusionbee.com) (nur für Mac, soweit ich weiß, App lädt ca. 8 GB Model runter)

### DALL-E 2

[https://openai.com/dall-e-2/](https://openai.com/dall-e-2/)

Input: Text  
Output: Bild

War kurz vor Stable Diffusion angesagt.

### ChatGPT

[https://openai.com/blog/chatgpt/](https://openai.com/blog/chatgpt/)

Basiert auf GPT-3(?) von OpenAI

Input: Text  
Output: Text

Man kann hier wie mit nem Chatbot „Konversation“ betreiben, Nachfragen stellen bzw. in mehreren Wortwechseln Kontext aufbauen

### Whisper

> **[GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak...](https://github.com/openai/whisper)**
>
> Robust Speech Recognition via Large-Scale Weak Supervision

Alternativ: [Portiert auf C++](https://github.com/ggerganov/whisper.cpp) oder eine [Variante zum direkt im Browser ausprobieren (WebAssembly)](https://whisper.ggerganov.com/talk/)

Input: Speech  
Output: Text

Die Ergebnisse sind schon recht ordentlich. Ich hab gelesen, dass einige Podcaster das bereits nutzen, um automatisiert Transkripte ihrer Podcast-Sendungen zu machen.

## Der Hype

In einigen Bubbles auf Twitter und Mastodon geht es ganz schön ab und Leute sind total begeistert darüber, was für (auf den ersten Blick) exzellente Texte **ChatGPT** hervorbringen kann.  
Hier mal ein paar random Links zu Posts mit Beispielen:

- [Lex Friedman (@lexfri@hachyderm.io)](https://hachyderm.io/@lexfri/109450173788375178): Write a limerick about Breaking Bad
- [Ralf Stockmann (@rstockm@chaos.social)](https://chaos.social/@rstockm/109454793082470938): Tell me why Mastodon is better than Twitter
- [anhdres 🌿 on Twitter](https://twitter.com/anhdres/status/1599038616545546240): write a biblical verse in the style of the king james bible explaining how to remove a peanut butter sandwich from a VCR
- [Chris Marquardt :fairydust: (@chrismarquardt@chaos.social)](https://chaos.social/@chrismarquardt/109456254826848647): Poem about Chris the photographer
- [Pwnallthethings (@Pwnallthethings@mastodon.social)](https://mastodon.social/@Pwnallthethings/109459193244944907): Write a Python script to decide if to give a prisoner parole. Criteria are race and gender
  - hier sieht man sehr schön, dass das Modell offensichtlich krassen Bias hat, resultierend aus den Trainingsdaten

- Lehrer korrigiert Deutsch-Aufsätze mithilfe von ChatGPT: [Hendrik Haverkamp on Twitter](https://twitter.com/hav_hendrik/status/1599708958234537984)
- ChatGPT macht Fehler bei sehr simplen Aufgaben:
  - fastest marine mammal: [polyfloyd (@polyfloyd@hsnl.social)](https://hsnl.social/@polyfloyd/109466598287951393)
  - is subtraction commutative: [David Radcliffe (@davidradcliffe@mathstodon.xyz)](https://mathstodon.xyz/@davidradcliffe/109485249410577196)

- Sehr irre: Eine VM innerhalb von ChatGPT bauen: [Building A Virtual Machine inside ChatGPT](https://www.engraved.blog/building-a-virtual-machine-inside/)

Das führt zu interessanten Effekten und Diskussionen:

- Stack Overflow hat offenbar ein Problem mit AI-generated Antworten: [AI-generated answers temporarily banned on coding Q&A site Stack Overflow | The Verge](https://www.theverge.com/2022/12/5/23493932/chatgpt-ai-generated-answers-temporarily-banned-stack-overflow-llms-dangers)
- Der Präsident der Hochschule Karlsruhe mit Gedanken und offenen Fragen, inwieweit ChatGPT und Co. die Arbeit an Unis verändern mag: [https://twitter.com/RobertLepenies/status/1600611202761105414](https://twitter.com/RobertLepenies/status/1600611202761105414)
  - Money Quote: „mit GPT-3 Texte erzeugt, die qualitativ in den Sozialwissenschaften nicht unterscheidbar sind von der Arbeit von Studierenden. Gerade für euch getestet - unsere Profs erkennen den Unterschied nicht.“

Bei Stable Diffusion gibt es mittlerweile tonnenweise Webseiten, die generierte Bilder präsentieren:

- [https://arthub.ai](https://arthub.ai)

Es gibt sogar schon Guides und HowTos, wie man die besten Prompts schreibt:

- [https://mpost.io/best-100-stable-diffusion-prompts-the-most-beautiful-ai-text-to-image-prompts/](https://mpost.io/best-100-stable-diffusion-prompts-the-most-beautiful-ai-text-to-image-prompts/)
- [Stable Diffusion: Prompt Guide and Examples](https://strikingloo.github.io/stable-diffusion-vs-dalle-2)

Ich finde die ganze Entwicklung sehr spannend. Dabei weniger die Tatsache, dass diese neuen Modelle recht erstaunliche Ergebnisse produzieren. Sondern fast schon mehr die Beobachtung, dass es da grad so einen Hype gibt.

Und dass es zumindest in einigen Bereichen bald einen zweiten oder dritten Blick braucht, um computergenerierte von menschengemachten Texten unterscheiden zu können.
