Schlüsseltechnologie

Schlüsseltechnologie

By Xyrillian NoisesTechnology
Download on the App Store

Schlüsseltechnologie episodes

  • STP097: Proxying

    Ein eigentlich überholtes Thema, das auch schon früher an der Reihe hätte sein können. Wird kaum noch verwendet und wenn, dann in umgekehrter Richtung, als man anfänglich annimmt. Allerdings eine gute Grundlage für das, was in der nächsten Folge ansteht.

    Shownotes
    • Proxy: ein Vermittler zwischen Client und Server

      • von engl. proxy representative (Stellvertreter), Kognat zur Prokurist:in via lat. procurator (Stellvertreter, Besorger, Verwalter)
      • vgl. Kellner als Proxy zwischen den Gästen und der Küche
      • vgl. Callcenter-Mitarbeiter als Proxy zwischen dem Kunden und der Firma
      • im Netzwerksinne ein Vermittler nicht auf Netzwerkebene (wie ein Router auf Layer 3, vgl. STP005), sondern auf Applikationsebene
      • im engeren Sinne verwaltet ein Proxy Anfragen eines Clients an mehrere Server, aber heute vielleicht am weitesten verbreitet: Reverse Proxy

        • steht vor einem Server und stellt die Schnittstelle nach außen dar
        • Anwendungsfälle: Lastverteilung, Caching, Authentifizierung/Authorisierung (siehe STP039), DDoS-Schutz, TLS-Terminierung (siehe STP052) bzw. Vermittlung zwischen TLS nach außen und mTLS nach innen (Wikipedia ist nostalgisch und redet hier noch von "Beschleunigungshardware" für SSL)
        • hingegen der vom Client bestellte Vermittler: Anwendungsfälle für Forward Proxies (insb. im Kontext von HTTP)

          • Sicherheitsgrenze in Firmen- oder anderen geschützten Netzwerken: heute kaum noch verbreitet aufgrund der weiten Verbreitung von TLS (stattdessen eher DNS-Level-Filterung, oder halt TLS-MitM-Proxying mit In-House-CA; evtl. Einsatz auf Servern, die nur mit wohldefinierten Zielen reden dürfen, aber nicht mit z.B. C&C-Servern von Botnets)
          • Umgehung von Zugangsbeschränkungen (Ratelimits oder Geoblocking): heute eher mit VPN (siehe STP098)
          • Anonymität: heute eher mit Tor (siehe STP098)
          • Verbindungspersistenz: früher bei IRC relevant, heutzutage (siehe STP022) ist Chat einfach nicht mehr dezentral (bestenfalls noch föderiert)
          • 1 hr 6 min
          • STP096: Hackerethik

            Für diese Folge klettern wir weit nach oben in den Elfenbeinturm, fast bis zum Magnolienpavillon. Dort haben wir eine ausreichend gute Sicht auf das heutige Thema.

            Shownotes
            • Einstiegsfrage: Was macht man, wenn man von Computern Ahnung hat und in einem Computersystem eine Sicherheitslücke findet?

              • Blackhat-Antwort: ausnutzen, um Geld oder Macht zu erlangen (was natürlich strafbar ist)
              • Whitehat-Antwort: melden, damit die Sicherheitslücke geschlossen wird (entweder als "Full Disclosure" oder "Responsible Disclosure")
                • ist idiotischerweise auch strafbar, siehe § 202a und § 202b StGB
                • offenbar sind Tätigkeiten in der IT-Sicherheit mit ethischen Fragen verknüpft... und nicht nur da

                  • vgl. Einfluss von Social-Media-Algorithmen auf Meinungsbildung
                  • vgl. "Psychose" durch Chatbots
                  • vgl. automatisierte Todesurteile durch Kampfdrohnen
                  • etc.
                  • 1984: erste Formulierung einer konsistenten Hackerethik durch den US-Journalisten Stephen Levy, hier in der durch den CCC propagierten Phrasierung

                    • "Der Zugang zu Computern und allem, was einem zeigen kann, wie diese Welt funktioniert, sollte unbegrenzt und vollständig sein."
                      • vgl. STP050: "Hacker" ist konzeptionell nicht auf Computertechnik beschränkt
                      • Fürsprache für das Informationszeitalter, und Gegenrede gegen künstliche Knappheit des Immaterialgüterrechtes (siehe STP040)
                      • "Alle Informationen müssen frei sein."
                        • vgl. Open-Source-Lizenzen (siehe STP040)
                        • vgl. Informationsfreiheits-/Transparenzgesetze
                        • "Mißtraue Autoritäten – fördere Dezentralisierung."
                          • vgl. STP056 zu (De-)Zentralisierung
                          • Hacker als Menschen, die nicht gut durch Autorität lernen, sondern eher trotz Autorität
                          • "Beurteile einen Hacker nach dem, was er tut, und nicht nach üblichen Kriterien wie Aussehen, Alter, Spezies, Geschlecht oder gesellschaftlicher Stellung."
                            • vgl. die Neigung von Hackern, sich mit Nicknames statt bürgerlichem Namen zu identifizieren
                            • "Man kann mit einem Computer Kunst und Schönheit schaffen."
                              • vgl. Programmieren als künstlerische Tätigkeit
                              • vgl. Computerkunst, Demoszene
                              • "Computer können dein Leben zum Besseren verändern."
                                • in der ausführlicheren Erklärung bei Wikipedia: "[Hacker] sind der Überzeugung, dass jeder von Computern profitiert, und wenn jeder mit Computern so umgehen würde, wie sie es tun, die Hackerethik die Welt zum Besseren wenden kann."
                                • 1989: infolge des KGB-Hack Erweiterung der Hackerethik durch den CCC um zwei Zusatzpunkte

                                  • "Mülle nicht in den Daten anderer Leute."
                                  • "Öffentliche Daten nützen, private Daten schützen."
                                  • 2001: Reflektion der Hackerethik durch den finnischen Philosophen Pekka Himanen

                                    • Hackerethik als Gegenentwurf zur Protestantischen Arbeitsethik, von Himanen definiert als: "Arbeit muss als gottgewollter Lebenszweck betrachtet werden, sie muss so gut wie möglich verrichtet werden und Arbeit muss als Pflicht gelten, die man erledigt, weil sie erledigt werden muss"
                                      • Hackerethik hingegen zentriert um leidenschaftliches kreatives Handeln mit gesellschaftlichem Mehrwert
                                      • Austausch und Freiheit mehren den gemeinsamen Wohlstand
                                      • Himanen sieht einen Bezug zu der platonischen Lehre, in der "sich wahre Erkenntnis plötzlich ergibt und nur dann, wenn man zusammenlebt und oft und familiär miteinander kommuniziert"
                                      • 1 hr 21 min
                                      • STP095: Datenbank-Schemadesign

                                        Es hat nur 83 Folgen gedauert, bis wir wieder auf das Thema kommen. Diesmal soll es nun um Überlegungen zur tatsächlichen Umsetzung von Datenbanken gehen, und auch Tücken im Detail kommen zur Sprache.

                                        Shownotes
                                        • Rückbezug STP012: relationale Datenbanken (RDBMS)

                                          • RDBMS sind tabellenbasiert: gleichartige Objekte als Zeilen in Tabellen abgelegt, deren Spalten im Voraus definiert sind -> Zeilen werden auch Records (Datensätze) genannt
                                          • Rückbezug STP071/072: Tabelle ist eine Liste von Datensätzen, Datensatz ist ein Produkttyp (siehe STP072) von Einzelwerten pro Spalte
                                          • RDBMS sind relational: Kreuzreferenzen zwischen Tabellen (z.B. Datensatz für Mitarbeiter enthält eine Abteilungsnummer, damit eine Referenz in den entsprechenden Datensatz der Abteilung)
                                          • wie in STP012 schon erwähnt: der Entwurf eines guten Datenbankschemas ist eine Kunst (vgl. den Abendgedanken in STP072: Datenstrukturen und Datenfluss als Fundament des Programmentwurfs)
                                          • Normalisierung: Strukturierung von Datenbankschemata in einer Art und Weise, die Redundanzen reduziert

                                            • Ziel: keine redundante Speicherung von Informationen (um Platz zu sparen, und um Inkonsistenzen zu vermeiden)
                                            • der theoretische Kanon kennt eine Reihe zunehmend strikterer Normalformen: 1NF -> 2NF -> 3NF -> BCNF -> 4NF -> 5NF
                                            • Diskussion anhand der Beispiele aus dem verlinkten Wikipedia-Artikel
                                            • übergreifendes Motiv: sollte man sich mal klar machen, aber Xyrill wird (anders als der Wikipedia-Artikel) an einigen Stellen Gegenrede leisten
                                            • erste Normalform (1NF): einzelne Tabellenspalten dürfen nur atomare Werte enthalten, keine strukturierten Datensätze

                                              • siehe Beispiel: Tabelle "CD-Lieder" mit Spalte "Album", die sowohl Künstler als auch Albumtitel enthält -> in zwei Spalten aufteilen
                                              • außerdem: Spalte "Titelliste" enthält eine Liste von Titelnamen -> aufteilen in Spalten "Track" und "Titel", ein Datensatz pro Titel
                                              • Begründung in der reinen Lehre: Abfragen nach Teilwerten eines nichtatomaren Attributes werden erschwert
                                              • Xyrills Gegenreden:
                                                • moderne Datenbanken ermöglichen auch ergonomischen Zugriff in strukturierte Spalten (vgl. z.B. der JSON-Spaltentyp in PostgreSQL)
                                                • Denormalisierung kann das Leben einfacher machen, wenn man keine strukturierte Abfrage in die Spalte hinein benötigt (Beispiel: GC-Policies in Keppel)
                                                • Xyrills Anekdote: unerwartete Probleme mit numerischen IDs beim Umstieg von MaxDB auf PostgreSQL
                                                • zweite Normalform (2NF): 1NF + keine Spalte außerhalb eines Schlüsselkandidaten hängt funktional von einer echten Teilmenge des Schlüsselkandidaten ab

                                                  • hierbei Schlüsselkandidat: ein Satz von Spalten, deren Werte Datensätze eindeutig identifizieren (z.B. bei der Tabelle "CD-Lieder" die Spalten "CD-ID" und "Track") -> beim Schemadesign wird hieraus (meist) ein Kandidat zum Primärschlüssel gewählt (Beispiel: in Dateisystemen ist der vollständige Pfad ein Schlüsselkandidat, aber in der Praxis ist meist die Inode-Nummer der bevorzugte Schlüssel)
                                                  • siehe Beispiel: Tabelle "CD-Lieder" mit Spalte "CD-ID" und "Track", aber Spalten mit Informationen zum Album (z.B. "Interpret" und "Albumtitel") hängen nur von der CD-ID ab, nicht vom Track
                                                  • damit unnötige Duplikation in diesen Spalten zwischen Datensätzen betreffend dieselbe CD, sowie Risiko von Inkonsistenz zwischen diesen Datensätzen
                                                  • Lösung: Aufspaltung in zwei Tabellen "CDs" und "Lieder", letzteres mit Bezug auf die CD-ID
                                                  • dritte Normalform (3NF): 2NF + keine Nichtschlüsselspalten hängen untereinander funktional ab

                                                    • siehe Beispiel: Tabelle "CD" mit Spalten "Interpret" und "Gründungsjahr", aber das Gründungsjahr hängt vom Interpreten ab -> wiederum unnötige Duplikation und Risiko von Inkonsistenzen
                                                    • Lösung: Abspaltung in eine separate Tabelle "Künstler", möglicherweise unter Einführung eines neuen synthetischen Schlüssels
                                                    • weitere Normalformen: Boyce-Codd-Normalform (BCNF), 4. Normalform (4NF), 5. Normalform (5NF)

                                                      • Xyrills Gegenrede: die Beispiel werden zunehmend esoterisch und es sieht danach aus, dass hier vor allem akademische Probleme gelöst werden
                                                      • ttimeless's Gegenrede: nicht die Kreativität der Nutzer:innen unterschätzen
                                                      • vielleicht als allgemeines Prinzip: beim Design immer erst einen Primärschlüssel wählen und sich dann bei jedem neuen Attribut fragen, zu welchem Schlüssel dieses gehört -> wenn keine eindeutige Antwort möglich, ist wohl eine neue Tabelle erforderlich (z.B. häufig für M:N-Relationen)
                                                      • 1 hr 5 min
                                                      • STP094: Vertrauenswürdiger Code

                                                        Der Vertrauende macht Aspekte seines Wohlergehens und seiner Sicherheit vom Verhalten des Kooperationspartners abhängig, sagt die Wikipedia. Der vertrauen wir ja bekanntlich. Was könnte man aber tun, wenn der Kooperationspartner nicht menschlich und somit schwierig einzuschätzen ist?

                                                        Ihr könnt jedenfalls sicher sein, dass auf diesem Kanal nur von uns notarisierte Inhalte verbreitet werden.

                                                        Shownotes
                                                        • Prolog: in der IT-Sicherheit meist der Angreifer im Vorteil, weil vielfache Wiederholung bzw. Fächerung von Angriffen vergleichsweise einfach ist und am Ende nur einer durchkommen muss

                                                          • offensive Verteidigung ("Hackback") problematisch aufgrund schwieriger Attributierung (wenn der Angreifer keine offensichtlichen Fehler macht), also defensive Strategien notwendig
                                                          • bisher zur Angriffsseite: STP049 Schadcode, STP051 Ablauf eines IT-Angriffs
                                                          • bisher zur Verteidigungsseite: STP023 Virtualisierung (und darin Sandboxing), STP038 Software-Tests, STP078/080 Common Weakness Enumeration
                                                          • heute heben wir wieder den Schild anstelle des Schwertes
                                                          • Code Signing

                                                            • Idee: nur Code aus vertrauenswürdigen Quellen ausführen
                                                            • vgl. STP048: Vertrauen klassischerweise durch eine PKI nach X.509 (analog zu Transportverschlüsselung TLS bei Webseiten)
                                                            • als Wurzelzertifikatsautorität tritt der Plattformbetreiber auf, z.B. der App-Store-Betreiber oder bei Kerneltreibern der Betriebssystem-Hersteller
                                                            • Seitenleiste: die entsprechenden Signaturschlüssel sind sicherheitskritisch und werden heutzutage meist in HSM (Hardware-Sicherheitsmodulen) aufbewahrt

                                                            • Problem: Was bringt eine signierte Programmdatei, wenn die Ausführungsumgebung schon kompromittiert ist?

                                                              • Idee: Secure Boot und vergleichbare Technologien
                                                              • schon der Prozessor selber kann beim Start Code-Signaturen prüfen, ab dann Code Signing auf allen Ebenen über das Betriebssystem bis zum Anwendungsprogramm
                                                              • Vorteile von Code Signing und Secure Boot:

                                                                • verhindert bestimmte Einschlesungspfade für Malware (z.B. wenn man "libreoffice download" sucht und nicht die offizielle LibreOffice-Webseite findet, sondern eine legitim wirkende Virenschleuder)
                                                                • verhindert bestimmte Methoden für Lateral Movement und Persistierung (selbst wenn ein Prozess kompromittiert ist, kann er nicht zum Beispiel neue Programmdateien mit Malware auf die Platte schreiben und ausführen)
                                                                • Nachteile von Code Signing und Secure Boot:

                                                                  • kein perfekter Schutz (aber was ist das schon)
                                                                  • Ablauf des signierenden Zertifikats könnte ansonsten unveränderte Systeme funktionsunfähig machen -> deswegen bei Code Signing meist nur Prüfung auf "Signatur vor Ablauf", nicht auf "aktuelle Zeit vor Ablauf"
                                                                  • erlaubt Willkür seitens der Geräte- bzw. Betriebssystemhersteller (siehe z.B. Entfernung von ICEBlock aus dem iOS-App-Store)
                                                                  • zieht Eigentümerschaft am Gerät in Zweifel; vgl. Jay Freemans Diktum von "Felony Contempt of Business Model" ("verbrecherische Missachtung des Geschäftsmodells") zur Beschreibung des Effektes von DMCA Section 1201 und vergleichbaren Gesetzen (in Dtl. § 95a UrhG), welches die Umgehung von "wirksamen technischen Maßnahmen" zum Schutz von Urheberrechten kriminalisiert
                                                                  • ganz anderer Ansatz: Reduktion der Trusted Computing Base (TCB) ("vertrauenswürdige Rechenbasis" bzw. eher "der man vertrauen muss")

                                                                    • TCB: "die Gesamtmenge an Hardware und Software, die für den sicheren Betrieb eines Systems essentiell sind"
                                                                    • nicht ganz dasselbe wie "weniger Programmcode = weniger Programmierfehler"
                                                                    • z.B. bei Sandboxing ist nur die Sandbox selber Teil der PCB; Code innerhalb der Sandbox sollte dann (hoffentlich!) auch im Fehler- oder Infektionsfall keinen Schaden anrichten können
                                                                    • praktisches Beispiel: in meinem LDAP-Server Portunus gibt es einen Teil, der mit Root-Rechten ausgeführt werden muss; dort habe ich mal reguläre Ausdrücke (vgl. STP021) durch explizite Parser ersetzt, weil das Entfernen der Regex-Bibliothek das Root-Binary um 10-15% verkleinert hat
                                                                    • Randbemerkung: TCB-Reduktion ist auch, warum ich lieber 100 Zeilen Code selber schreibe, als eine Bibliothek zu importieren, die die eine Sache macht, die ich brauche... und dann noch zig andere Sachen mit unzähligen weiteren Abhängigkeiten (Symbolbild)
                                                                    • Videoempfehlung für diese Art, über Software nachzudenken: Fefe über "Das Nützlich-Unbedenklich-Spektrum"

                                                                      • in den Lektionen einiger Überlapp mit "Vom Mythos des Mann-Monats" (vgl. STP068/STP074/082)
                                                                      • aber mit deprimierendem Einschlag: "Angenommen, jemand findet einen Weg, besser mit Komplexität umzugehen. Was passiert dann? Schreiben wir dann alle die alte Software neu, aber besser? Nein! Wir schreiben dann neue, noch größere Software. Wieder am Limit dessen, was mit den neuen Methoden machbar ist." (Der Talk ist von 2019. Jede Parallele zu Coding-Agenten ist rein zufällig.)
                                                                      • Xyrills Favorit: die Wortprägung "Bugwelle" für die immer größer werdende Flut von Bugreports, die ein langlaufendes Softwareprojekt vor sich herschiebt
                                                                      • 1 hr 1 min
                                                                      • STP093: Historische Bindemittel

                                                                        Es wurde in der vorangegangenen Holzfolge angedroht und hier ist sie nun: die Folge über Leime. Allerdings natürlich nicht vollständig, sondern eher mit verstärkem Bezug zu vergangenen Techniken und Technologien. Wie passend, dass Ajuvo und Damals™ mit dabei ist.

                                                                        ShownotesImpressionen aus der Aufnahmesituation:

                                                                        Und nun die eigentlichen Shownotes:

                                                                        • Trocknen vs. Härten

                                                                          • Trocknung ist ein physikalischer Prozess, Verdunstung des Löse- oder Verdünnungsmittels, meist reversibel und zerstörungsfrei wieder lösbar
                                                                          • Härten ist ein chemischer Prozess, Reaktion des Bindemittels mit Luft oder anderen eingesetzten Materialien, meist irreversibel, lösen der Verbindung ist mit Zerstörung des Materials verbunden
                                                                          • Bindemittel allgemein: "Man kann mit allem malen, was pappt." – Bindemittel kann alles sein, dass sowohl inneren Zusammenhalt hat (Kohäsion) als auch an den verarbeiteten Materialien anhaftet (Adhäsion) und sich sinnvoll verarbeiten lässt.

                                                                          • Mineralische Bindemittel

                                                                            • Kalk (CaC0₃ → CaO→ Ca(OH)₂ → CaCO₃)
                                                                            • Gips CaSO₄
                                                                            • Silikat (Wasserglas, Quarzsand mit Pottasche geschmolzen)
                                                                            • Zement
                                                                            • Öle (fette und ätherische)

                                                                              • trocknende Öle
                                                                                • Leinöl gewonnen aus den Samen der Leinpflanze
                                                                                  • seit langer Zeit als Oberflächenüberzug und für Farben gebräuchlich
                                                                                  • bildet einen hochelastischen und dauerhaften Polymerfilm
                                                                                  • auch für den Salat geeignet
                                                                                  • Tungöl, auch chinesisches Holzöl
                                                                                    • wiederstandsfähiger als Leinöl neigt aber als Malschicht etwas zur Versprödung
                                                                                    • in flüssiger Form giftig aber nach dem Trocknen unbedenklich
                                                                                    • Perillaöl
                                                                                      • ähnlich dem Leinöl
                                                                                      • aus den Samen asiatischen der asiatischen Perillapflanze
                                                                                      • halbtrocknende Öle
                                                                                        • Hanföl
                                                                                        • Mohnöl
                                                                                        • Sonnenblumenöl
                                                                                        • Walnussöl
                                                                                        • nichttrocknende Öle
                                                                                          • Olivenöl
                                                                                          • Rapsöl
                                                                                          • …
                                                                                          • Harze

                                                                                            • pflanzlich
                                                                                              • Bernstein, versteinerte Harze die älter als 1 Milion Jahre sind
                                                                                              • Kopal, Sammelbezeichnung für verfestigte Harze von Laub- und Nadelbäumen
                                                                                              • Dammar, rezentes Baumharz südostasischer Dipterocarpaceen
                                                                                              • Mastix, Sekret von Pistaziensträuchern
                                                                                              • Sandarak, Exkret nordafrikanischer Coniferen
                                                                                              • Kolophonium, Kristaliner Destilationsrückstand von Terpentinen (Ausscheidungen von Coniferen)
                                                                                              • Farbharze
                                                                                                • Drachenblut, Rezentes rotes Farbharzaus den Früchten asiatischer Palmen
                                                                                                • Gummigutt, gelbes Farbharz aus dem Milchsaft der Garnicia Morella (Ostasien, Ceylon, Thailand)
                                                                                                • tierisch
                                                                                                  • Schellack, Tierisches Exkret der ostasischen Stockläuse(Lackschildlaus)
                                                                                                  • Wachse

                                                                                                    • Bienenwachs
                                                                                                    • Carnaubawachs
                                                                                                    • Montanwachs
                                                                                                    • …
                                                                                                    • Seifen, basische Salze von Fettsäuren

                                                                                                      • Öl wird durch Zugabe von Alkalien in Fettsäure und Glyzerin gespalten und wasserlöslich
                                                                                                      • z.B. Marseiller Seife mit einem bestimmten Anteil Fettsäuren
                                                                                                      • Da chemisch ähnlich lassen sich auch Wachse, Harze und Fette zumindest anverseifen, der Rest wird emulgiert (Punisches Wachs)
                                                                                                      • Pflanzliche Leime (Kohlenhydrate)

                                                                                                        • Stärken
                                                                                                          • aus stärtkehaltigen Pflanzenteilen durch mahlen und waschen gewonnen
                                                                                                          • können nach dem Einrühren in kaltes Wasser mit heißem Wasser verkleistert werden
                                                                                                          • Weizen-
                                                                                                          • Kartoffel-
                                                                                                          • Mais-
                                                                                                          • Reis-
                                                                                                          • …
                                                                                                          • Dextrine
                                                                                                            • Abbauprodukte von Stärken
                                                                                                            • seit 1850 als Malerleim in Aquarellfarben
                                                                                                            • durch erwärmen auf 160-200°C: Röstdextine
                                                                                                            • durch Aufschluss mit Säuren: Säuredextrine
                                                                                                            • durch Abbau mit Diastase: Enzymdextrine
                                                                                                            • Gummen, wasserlösliche Baumharze
                                                                                                              • Gummiarabicum, Sekret von Akaziengewächsen aus Afrika oder Asien
                                                                                                              • Kirschgummi, Exkret erkrankter Steinostbäume hauptsächich der Gattung Prunus
                                                                                                              • Tierische Leime (Proteine)

                                                                                                                • Eiweiß:
                                                                                                                  • Das Hühnereiweis selbst als Bindemittel verwendet,
                                                                                                                  • trocknet wasserunlöslich auf
                                                                                                                    • das Eigelb kann duch seinen hohen Lecitingahalt als Emulgator für Temperafarben genutzt werden
                                                                                                                    • Casein:
                                                                                                                      • Ein Bestandteil der Kuhmilch,
                                                                                                                      • wird durch chemische Fällung mit Lab, mineralischen Säuren oder natürliche Säuerung der Milch zu Quark oder als Pulverkasein gewonnen
                                                                                                                      • erhält seine Klebkraft durch alkalischen Aufschluss z.B. mit Hirschhornsalz(Amoniumcarbonat), Borax oder Kalk
                                                                                                                      • Glutinleime
                                                                                                                        • Das in "tierischen Rohstoffen" enthaltene Kollagen wird durch Kochen in wasserquellbares Glutin überführt
                                                                                                                        • Glutinleim ist löslich durch erwärmen
                                                                                                                        • der klassische Tischlerleim
                                                                                                                        • bereits im alten Ägypten in Verwendung
                                                                                                                        • Benennung meist nach eingesetztem Rohstoff
                                                                                                                          • Knochenleim
                                                                                                                          • Hautleim
                                                                                                                          • Lederleim
                                                                                                                          • Gelatine
                                                                                                                          • Fischleim
                                                                                                                          • 2 hr 9 min
                                                                                                                          • STP092: Der Siegeszug der KI-Konnektionisten (Teil 2)

                                                                                                                            Letzte Folge der Reihe. Heute mit Bilderzeugungsmodellen und der Erklärung, warum die später drankommen, obwohl sie eher da waren (zumindest in der breiten Nutzung). Außerdem noch mit ein paar abschleßenden Gedanken am Ende dieser Serie.

                                                                                                                            Shownotes
                                                                                                                            • Nochmal zurück zum ersten KI-Winter (siehe STP091): Warum skalieren reine Perzeptrone schlecht? Bsp. Bildererkennung

                                                                                                                              • Bild in Thumbnail-Größe (z.B. 256 Pixel im Quadrat, 3 Farbkanäle) besteht aus 256 * 256 * 3 = 196608 Einzelwerten
                                                                                                                              • Abbildung im ersten Layer des Perzeptrons auf z.B. 1000 Neuronen würde das Training von 196 Millionen Gewichten erfordern, und das ist nur der erste Layer!
                                                                                                                              • so viele Gewichte können nur mit sehr vielen Eingabedaten sinnvoll trainiert werden -> enormer Rechenaufwand für Training und Inferenz
                                                                                                                              • Faltende neurale Netzwerke (Convolutional Neural Network, CNN, ConvNet)

                                                                                                                                • Idee 1: pro Layer nicht einfach alle Eingabewerte mit allen Ausgabeneuronen verknüpfen, sondern eine bestimmte Struktur vorgeben (und alle nicht dazu passenden Verbindungen verbieten), um die Menge von Gewichten zu reduzieren
                                                                                                                                • Idee 2: Mustererkennung basiert auf Merkmalen (Features), die unabhängig von ihrer genauen Position im Bild immer gleich erkannt werden sollen
                                                                                                                                • Faltungslayer (Convolution Layer): aus einer Eingabe mit N * N Werten fasst jedes Feature-Neuron eine Teilregion der Größe K * K zusammen (z.B. K = 11: 121 Gewichte pro Neuron); Anzahl von Ausgabeneuronen basierend auf der gewünschten Anzahl F unterschiedlicher Features entweder N * N * F (bei Abtastrate 1) oder geringer (bei weniger dichter Abtastung)
                                                                                                                                  • alle Neuronen desselben Features verwenden dieselben Gewichte -> enorme Reduktion des Trainings- und Inferenzaufwands
                                                                                                                                  • Zusammenfassungslayer (Pooling Layer): Reduktion einer Eingabe mit N * N * F Werten in z.B. N/2 * N/2 * F Werte durch Zusammenfassen von nichtüberlappenden Regionen (z.B. 2x2)
                                                                                                                                    • hier keine trainierbaren Gewichte, sondern Vorauswahl einer Zusammenfassungsfunktion wie max oder avg
                                                                                                                                    • am Ende meist einige Ebenen klassische Perzeptron-Layer mit voll trainierbaren Gewichten zwischen allen Neuronen
                                                                                                                                    • Beispiel: Architekturen früher Bilderkennungssysteme
                                                                                                                                    • Tuning-Entscheidungen: Anordnung der Layer, Anzahl der Features, Faltungsgrößen, Abtastraten, Aktivierungsfunktion (heute meist ReLU)
                                                                                                                                    • ab 2015: Diffusionsmodelle

                                                                                                                                      • grundsätzlicher Ansatz: durch den Datenraum gerichtete Diffusion von Daten von einem Startpunkt zu einem höherwertigen Endpunkt
                                                                                                                                        • während des Trainings fängt man mit hochwertigen Daten an und fügt immer mehr Rauschen hinzu, wodurch die Daten von ihrem Ausgangszustand "wegdiffundieren"
                                                                                                                                        • Modell wird darin trainiert, diesen Diffusionsprozess umzukehren
                                                                                                                                        • im Bereich der Bildverarbeitung z.B. Super-resolution imaging (mit einem niedrig aufgelösten Bild als Startpunkt) oder Bilderzeugung (mit reinem Rauschen als Startpunkt)
                                                                                                                                          • Problem: Wenn man mit nur Rauschen anfängt, wie entscheidet man, wo man hin will?
                                                                                                                                          • 2021: CLIP (Contrastive Language-Image Pre-Training)
                                                                                                                                            • Trainingsdatensatz: Bilder mit möglichst akkuraten Textbeschreibungen ihrer Inhalte
                                                                                                                                            • gleichzeitiges Training von zwei Encoder-Transformern, die einmal Bilder und einmal Textbeschreibungen in Embeddings übersetzen
                                                                                                                                            • Training der Encoder versucht, die Ähnlichkeit der Embeddings zwischen passenden Bildern und Textbeschreibungen zu maximieren und zwischen unpassenden Paaren zu minimieren
                                                                                                                                            • Bilderzeugung aus Diffusion: Text-Encoder übersetzt den Prompt in ein Embedding, Diffusionsmodell denoised damit ein initial komplett verrauschtes Bild in das Ausgabebild
                                                                                                                                              • beim Training des Diffusionsmodells muss zu den Trainingsbildern das Embedding der entsprechenden Beschreibung präsentiert werden
                                                                                                                                              • mögliche Realisierung: Diffusionsmodell als Transformer mit Self-Attention innerhalb des Bildes und Cross-Attention zum Embedding der Textbeschreibung
                                                                                                                                              • Videotipp: 3Blue1Brown zu Diffusionsmodellen; dort zum Beispiel zur Kodierung von "Negative Prompts" (z.B. "no extra fingers", "no JPEG compression residue")
                                                                                                                                              • Der gespielte O-Ton ist aus Deutschlandfunk Hintergrund: "10 Jahre OpenAI: Wie ChatGPT mit KI die Welt verändert".

                                                                                                                                                Xyrills Abendgedanken: Nach dieser Ausarbeitung verstehe ich jetzt, warum die Konnektionisten Transformer als den Durchbruch schlechthin und als Allheilmittel einsetzen. Aber, nochmal aus Gary Marcus's Blogartikel, der in STP089 referenziert war:

                                                                                                                                                Für immer gefangen im Land der Korrelationen, können neurale Netzwerke niemals (egal, wie viel Daten oder Rechenleistung ihnen zur Verfügung stehen) in der Lage sein, kausale Beziehungen zu verstehen -- warum Dinge so sind, wie sie sind -- und daraus folgend kausale Schlussfolgerungen zu ziehen. Dieser kritische Teil der menschlichen Kognition ist, warum Menschen nur einmal die Straßenverkehrsregeln in einer Stadt lernen müssen, um dann in vielen anderen Städten sicher fahren zu können, argumentiert Marcus. Teslas Autopilot hingegen kann Milliarden von Kilometern an Fahrten aufzeichnen und trotzdem crashen, wenn er in ein unbekanntes Szenario gerät oder mit ein paar strategisch plazierten Aufklebern überlistet wird. Marcus plädiert dafür, stattdessen Konnektionismus und Symbolismus miteinander zu verbinden.

                                                                                                                                                Und weiter:

                                                                                                                                                Viele der Fortschritte heutiger KI-Modelle resultieren wahrscheinlich aus der Ausweitung des Einsatzes symbolischer Werkzeuge, und nicht aus mehr Skalierung. Riesige Infrastruktur-Investitionen wie Stargate basieren wahrscheinlich auf falschen Annahmen darüber, was tatsächlich den Fortschritt vorantreibt.

                                                                                                                                                Als Schlusswort dieselbe Kritik an der Skalierungshypothese, aber weniger technisch ausgedrückt, von Quinn Norton in "What we talk about when we talk about AI":

                                                                                                                                                Menschen sind anders. Trotz der Entlehnung von Nomenklatur aus der Biologie haben die neuralen Netzwerke, die im Training von KI verwendet werden, keine Neuronen der menschlichen Art. Der Unterschied ist erkennbar. Wir lernen Sprache, Lesen und Schreiben anhand eines winzigen Datensatzes, und dieser Prozess umfasst Mimikry, Gefühle, Kognition und Liebe. Da mag auch statistische Gewichtung vorkommen, aber wenn dem so ist, dann haben wir den entsprechenden Mechanismus noch nicht in unserem Verstand und unseren Gehirnen gefunden. Es erscheint unwahrscheinlich, dass es dort in einer ähnlichen Form existieren würde, da diese KI-Systeme so viel mehr Informationen und Rechenleistung aufwenden müssen, um zu tun, was ein Erstsemesterstudent mit ein bisschen Motivation hinbekommt. Motivation ist unser Problem, aber es ist niemals ein Problem für KI-Systeme. Sie machen immer weiter, bis ihre Befehle einen Endpunkt erreichen, und dann erstarren sie. KI-Systeme sind leblos zu Beginn, leblos währenddessen, und leblos am Ende.

                                                                                                                                                52 min
                                                                                                                                              • STP091: Der Siegeszug der KI-Konnektionisten (Teil 1)

                                                                                                                                                Einige haben sich schon gefragt, wann denn nun die KI-Serie anfängt. Nun ja. Nachdem wir die letzten Male die Grundlagen besprochen haben, geht es nun im Sinne des aktuellen Zeitgeistes wirklich um KI. Zuerst im Bezug auf Text.

                                                                                                                                                ShownotesDamit wir uns nicht komplett verzetteln, beschränken wir uns in diesem Zweiteiler auf alle Entwicklungen, die zu den aktuellen Buzzword-Technologien geführt haben: Transformer und Diffusionsmodelle.

                                                                                                                                                • KI-Winter: Flaute in der KI-Forschung nach dem Scheitern eines bestimmten Ansatzes

                                                                                                                                                  • frühe 1970er: erster KI-Winter nach Problemen mit dem Skalieren von Perzeptronen (Scheitern konnektionistischer Ansätze)
                                                                                                                                                  • späte 1980er: zweiter KI-Winter nach allgemeiner Ernüchterung über Expertensysteme (Scheitern symbolischer Ansätze)
                                                                                                                                                  • danach neuer Aufwind für konnektionistische Ansätze durch neue Optimierungen und Moore's Law (Skalierungshypothese)
                                                                                                                                                  • Rekurrente neurale Netzwerke (Recurrent Neural Network, RNN)

                                                                                                                                                    • Grundproblem: Wie geht man mit zeitlich geordneten Daten um, die sich entlang des Zeitstrahls kausal beeinflussen (z.B. Sprache, Aktienkurse)?
                                                                                                                                                    • Idee: neurales Netzwerk verarbeitet immer die Eingaben aus einem Zeitschritt und gibt zusätzlich zur Ausgabe einen internen Zustand aus, der beim nächsten Zeitschritt zur Eingabe wird
                                                                                                                                                    • Problem: Wie trainiert man das? Backpropagation funktioniert nicht, wenn Signale zu früheren Layern rückwärts geschickt werden
                                                                                                                                                      • frühe Ansätze hatten Probleme mit hohem Trainingsaufwand, weil Backpropagation in Schleifen laufen muss
                                                                                                                                                      • hier aus Zeitgründen nur der Ansatz, der heutzutage die größte Bedeutung hat
                                                                                                                                                      • 2014: seq2seq zum Übersetzen natürlicher Sprache

                                                                                                                                                        • zwei separate aufeinanderfolgende Schritte
                                                                                                                                                          • Encoder: Lesen jeweils eines Eingabesymbols (Token); hierbei keine Ausgabe, sondern nur Aktualisierung eines internen Zustands
                                                                                                                                                          • Decoder: Extraktion eines Ausgabetokens aus dem internen Zustand unter Präsentation des zuletzt generierten Tokens, dabei ebenfalls Aktualisierung des internen Zustandes
                                                                                                                                                          • Abwägung
                                                                                                                                                            • Vorteil: damit keine Probleme mit rückwärts laufenden Signalen, Training mit Backpropagation möglich
                                                                                                                                                            • Nachteil: interner Zustand muss die gesamte Eingabe darstellen können, bei langen Eingabesequenzen "vergisst" der interne Zustand Teile der Eingabe
                                                                                                                                                            • im Gespräch erwähnt: Hutter Prize
                                                                                                                                                            • Lösung: Attention; im Falle von seq2seq:
                                                                                                                                                              • interner Zustand nach jedem Encoding wird gemerkt
                                                                                                                                                              • Decoding aus dem aktuellsten internen Zustand (wie zuvor) ergibt ein vorläufiges Ergebnis, das mit einem Satz trainierbarer Gewichte in eine Query (Abfrage) überführt wird (anschauliche Interpretation z.B. "Wir generieren jetzt das Adjektiv, das vor 'Garten' steht. Wer weiß was?")
                                                                                                                                                              • analog dazu werden die gemerkten internen Zustände des Encodings mit einem anderen Satz trainierbarer Gewichte in einen Key (Schlüssel) überführt (anschauliche Interpretation z.B. "Ich bin ein Adjektiv.")
                                                                                                                                                              • ...und außerdem mit einem dritten Satz trainierbarer Gewichte in einen Value (Wert) (anschauliche Interpretation z.B. "Das zuletzt gesehene Adjektiv ist 'groß'.")
                                                                                                                                                              • Values, bei denen Query und Key gut aufeinanderpassen, werden mit Gewichtung aufaddiert zu einem Kontext: C = softmax(Q * K^T) * V mit Softmax-Funktion
                                                                                                                                                              • tatsächliches Ausgabezeichen aus Kombination des Kontext mit dem ursprünglichen Ergebnis des Decoding
                                                                                                                                                              • 2017: Transformer verwerfen die rekurrente Struktur und arbeiten nur mit Attention, um die Parallelisierbarkeit zu verbessern (daher der berühmte Paper-Name "Attention is all you need")

                                                                                                                                                                • jedes Eingabesymbol (Token) wird in ein Embedding überführt, einen hochdimensionalen Vektor (z.B. GPT-3: je nach Modellvariante zwischen 768 und 12288 Dimensionen)
                                                                                                                                                                  • Ziel des Embedding: Darstellung von Konzepten in einem Vektorraum (Beispiel)
                                                                                                                                                                  • bei autoregressiver Texterzeugung (autoregressiv = "aus sich selbst heraus"):
                                                                                                                                                                    • Self-Attention auf den Embeddings der bis jetzt vorliegenden Tokenfolge (eventuell begrenzt durch das Context Window), Resultat ist ein aktualisierter Embedding-Vektor
                                                                                                                                                                    • aber: Attention ist eine lineare Funktion und kann nicht als universeller Funktionsapproximator fungieren
                                                                                                                                                                    • deswegen dahinter ein klassisches dicht verschaltetes Feed-Forward-Netzwerk, in dem die überwältigende Masse der trainierbaren Gewichte sitzt
                                                                                                                                                                    • Ergebnis: der finale Embedding-Vektor, der in ein Token zurückübersetzt wird
                                                                                                                                                                    • bei Texterzeugung anhand einer separaten Eingabesequenz (z.B. maschinelle Übersetzung, Spracherkennung, RAG) außerdem Cross-Attention zum Transfer von Informationen aus der Eingabesequenz in den Dekoder
                                                                                                                                                                    • Abendgedanken aus "Large Language Models, Model Collapse and the Conservation of Information": Es ist überraschend, wieviele Probleme sich auf "das nächste Wort vorhersagen" reduzieren lassen (vgl. Meldungen der Form "Goldmedaille in der Matheolympiade"). Aber:

                                                                                                                                                                      1. LLMs wägen nicht ab, sie verarbeiten.
                                                                                                                                                                        • statistische Aussagen auf Basis von Embeddings, nicht mehr und nicht weniger
                                                                                                                                                                        • ungeeignet für symbolische Aufgaben wie Arithmetik
                                                                                                                                                                        • LLMs überlegen nicht, sie rationalisieren.
                                                                                                                                                                          • die statistische Natur der Sache ist gut für Induktion, aber schlecht für Deduktion
                                                                                                                                                                          • LLMs können nicht endlose Informationen erzeugen.
                                                                                                                                                                          • 1 hr 14 min
                                                                                                                                                                          • STP090: Maschinelles Lernen vor der Jahrtausendwende

                                                                                                                                                                            Bevor wir dann wirklich zu dem kommen, was wir heute unter KI verstehen, geht es heut noch mal um die nun nicht mehr ganz so graue Vorzeit. Immerhin beginnen wir jetzt damit, Neuronen zu kitzeln und Liegestütze machen zu lassen. Nebenbei steuert Xyrill noch wertvolle Erziehungstipps bei.

                                                                                                                                                                            Shownotes
                                                                                                                                                                            • 1943: mathematische Modellierung von Neuronen durch den Neurophysiologen Warren McCulloch und den Logiker Walter Pitts

                                                                                                                                                                              • Bestandteile: mehrere Eingänge x_1 bis x_n und ein Ausgang y mit Logiksignalen (entweder 0 oder 1)
                                                                                                                                                                              • Inferenz-Funktion: y = (∑_i w_i * x_i + b) > 0 mit Gewichten w_i und Bias b
                                                                                                                                                                                • damit Teilung des Raumes der Eingabewerte in zwei Hälften entlang einer Gerade bzw. Hyperebene (Beispiel)
                                                                                                                                                                                • Berechnung der Gewichte: Präsentation von Eingabewerten mit bekannten erwarteten Ausgabewerten (Supervised Learning, überwachtes Lernen)
                                                                                                                                                                                  • bei jeder falschen Inferenz (y erwartet, aber y' erhalten) Update der Gewichte gemäß w_i -> w_i + r * (y - y') * x_i mit Lernrate r
                                                                                                                                                                                  • Lernen des Bias wie ein Gewicht w_0 mit x_0 = 1 für alle Trainingsdatensätze
                                                                                                                                                                                  • Praxisbeispiel
                                                                                                                                                                                  • damit jede binäre Unterscheidung lernbar, die durch eine lineare Schwelle ausgedrückt werden kann
                                                                                                                                                                                    • Problem: verrauschte Daten -> nichtbinäre Ausgaben notwendig
                                                                                                                                                                                    • Problem: andere Arten binärer Funktionen, z.B. y = x_1 XOR x_2 -> Verkettung mehrerer Neuronen notwendig
                                                                                                                                                                                    • 1957: Verschaltung mehrerer "Neuronen" zu einem Perzeptron

                                                                                                                                                                                      • mehrstufige Verkettung von Neuronen erlaubt Lernen komplexerer Funktionen, z.B. erst Erkennung spezifischer Teile und dann in Folgeschritten Zusammensetzung zu einem großen Ganzen
                                                                                                                                                                                      • Problem: Wenn während des Trainings fehlerhafte Ausgaben produziert werden, wo muss man dann Gewichte anpassen?
                                                                                                                                                                                      • Idee: Fehlerrückführung (Backpropagation); wenn am Ende ein Fehler rauskommt, muss dieser anteilig auf frühere Neuronen zurückattributiert und dort zum Training genutzt werden
                                                                                                                                                                                        • hierfür Anwendung der Kettenregel (siehe STP089), z.B. in einem 2-Layer-Perzeptron
                                                                                                                                                                                        • Kettenregel geht nur auf ableitbaren Funktionen, deswegen nicht mehr binäres Ausgabesignal, sondern eine geglättete Stufenfunktion wie die Sigmoidfunktion
                                                                                                                                                                                        • z.B. Signale y3 der dritten Ebene sind eine Funktion der Signale y2 der zweiten Ebene, und so weiter
                                                                                                                                                                                        • Ableitung z.B. von y3(y2(y1(x))) ist dy3/dx = dy3/dy2 * dy2/dx; ausgehend vom Fehler Δy3 des Ergebnisses Training der Gewichte w3 und Ermittlung eines Fehlers Δy2 für die nächste Ebene
                                                                                                                                                                                        • Achtung: das ist eine extreme Verkürzung aus didaktischen Gründen; tatsächlich wird nicht dividiert, sondern das Anwenden des Gradient-Operators auf die Loss-Funktion führt zu einer Vertauschung der Multiplikationsreihenfolge, was partielle Rückwärtsevaluierung ermöglicht
                                                                                                                                                                                        • Randbemerkung 1: hier beginnt das Meme, dass maschinelles Lernen nur ein Haufen Matrixmultiplikationen ist (vgl. XKCD 1838)
                                                                                                                                                                                        • Randbemerkung 2: geglättete Stufenfunktionen erlauben eine Variation in der Stärke bzw. Breite der Glättung (Temperatur)
                                                                                                                                                                                        • 1990er-2010er: maschinelle Übersetzung natürlicher Sprache mit statistischen Modellen, die keine neuralen Netzwerke sind (Quelle: Xyrills Vorlesungsnotizen von 2016; passenderweise dasselbe Jahr, indem Google Translate auf neurale Netzwerke umstieg)

                                                                                                                                                                                          • diverse miteinander kombinierbare Modelle zur Beurteilung der Wahrscheinlichkeit gegebener Sätze in einer einzelnen Sprache (Sprachmodell) bzw. der Wahrscheinlichkeit, dass zwei Sätze in verschiedenen Sprachen Übersetzungen voneinander sind (Übersetzungsmodell)
                                                                                                                                                                                          • Kombination von Sprachmodell und Übersetzungsmodell gemäß des Noisy-Channel-Modell:
                                                                                                                                                                                            • z.B. gegeben einem deutschen Satz D Suche nach dem wahrscheinlichsten englischen Satz E: P(E|D) = P(E) * P(D|E) / P(D) (Satz von Bayes), P(E) gemäß Sprachmodell und P(E|D) gemäß Übersetzungsmodell und P(D) irrelevanter konstanter Faktor
                                                                                                                                                                                            • stochastische Suche nach E: z.B. Start mit leerem Satz, schrittweise Erweiterung um je ein Wort aus allen möglichen englischen Wörtern, Verwerfen der schlechtestbewerteten Optionen
                                                                                                                                                                                            • Bsp. eines Sprachmodells: Markow-Kette
                                                                                                                                                                                              • sukzessiver Aufbau eines Satzes durch Raten des nächsten Wortes (vgl. Autocomplete)
                                                                                                                                                                                              • Training bestimmt aus einem gegebenen Textkorpus die Wahrscheinlichkeiten von bestimmten Wortsequenzen
                                                                                                                                                                                              • einfachster Fall: Bigramm-Modell, z.B. P(Ich bin groß) = P(ɛ, Ich) * P(Ich, bin) * P(bin, groß) * P(groß, ɛ)
                                                                                                                                                                                              • Erweiterung: Hidden Markov Model mit einer versteckten Zustandsmaschine, die Wortarten versteht; z.B. P(Ich bin groß) = P(ɛ, Pronomen) * P(Pronomen, Ich) * P(Pronomen, Verb) * P(Verb, bin) * P(Verb, Adjektiv) * P(Adjektiv, groß) * P(Adjektiv, ɛ)
                                                                                                                                                                                              • Abwägung: größerer Lookback erhöht die Kohärenz, führt aber schnell zu Overfitting
                                                                                                                                                                                              • Fun Fact: dazu hat Xyrill eine Abschlussarbeit geschrieben
                                                                                                                                                                                              • Bsp. eines Übersetzungsmodells: IBM alignment models, hier der Einfachheit halber nur Modell 1
                                                                                                                                                                                                • Training resultiert hauptsächlich in einer Wahrscheinlichkeitstabelle von Wortkorrespondenzpaaren
                                                                                                                                                                                                • z.B. P(Ich bin groß, I am big) = P(Ich, I) * P(bin, am) * P(groß, big) + (andere verschwindende Beiträge)
                                                                                                                                                                                                • Problem: versteht nicht grammatikalisch korrekte Wortreihenfolge, z.B. P(Ich bin groß, I am big) = P(Ich bin groß, I big am)
                                                                                                                                                                                                • Problem: versteht nicht Hilfswörter, die in der anderen Sprache keine Entsprechung haben
                                                                                                                                                                                                • Probleme mitigierbar durch Kombination mit Sprachmodell wie oben beschrieben
                                                                                                                                                                                                • Erweiterung durch Modell 2 bis 6
                                                                                                                                                                                                • 1980er: Expertensysteme, beispielhaft an der Programmiersprache Prolog

                                                                                                                                                                                                  • Expertensystem: "ein Programm, das Menschen bei der Lösung komplexer Probleme wie ein Experte unterstützen kann, indem es Handlungsempfehlungen aus einer Wissensbasis ableitet", bzw. kürzer "eine logische Entscheidungsmaschine"
                                                                                                                                                                                                  • Prolog: Programmiersprache, die nicht primär auf Zahlen oder Speicherbereichen arbeitet, sondern auf Fakten und Ableitungsregeln (siehe Beispiele im verlinkten Artikel)
                                                                                                                                                                                                  • Einschätzung: Prolog-artige Sprachen sind ein nützliches Paradigma für sehr spezifische Anwendungsfälle, aber die explizite Kodierung von Wissen läuft erfahrungsgemäß schnell in ontologische Probleme
                                                                                                                                                                                                  • 1 hr 37 min
                                                                                                                                                                                                  • STP089: Frühgeschichte der künstlichen Intelligenz

                                                                                                                                                                                                    Scheinbar ist die sogenannte KI etwas, was nicht ganz so schnell wieder weg geht. Daher fangen wir in dieser Episode damit an, etwas genauer zu erklähren, was es damit auf sich hat. Im ersten Teil dieser Reihe geht es um die entferntere Geschichte, die zu dem geführt hat, was wir heute sehen.

                                                                                                                                                                                                    ShownotesDer Einfachheit halber wird im gesamten Text "künstliche Intelligenz" als KI und "maschinelles Lernen" als ML abgekürzt.

                                                                                                                                                                                                    • KI kann vieles heißen, siehe die Breite von Meilensteinen in Wikipedias Timeline of AI; ein paar Picks als initiale Motivation

                                                                                                                                                                                                        1. Jhd. v. Chr.: Aristoteles beschreibt den Syllogismus als Methode formalen, mechanistischen Denkens
                                                                                                                                                                                                          • heutzutage Teil der Aussagenlogik
                                                                                                                                                                                                          • 12./13. Jhd: Ramon Llull legt sein Hauptwerk Ars generalis ultima vor, das erläutert, wie man durch mechanisches Kombinieren von Begriffen mittels einer von ihm erdachten "logischen Maschine" zu Erkenntnissen gelangt
                                                                                                                                                                                                            • Llull war sowohl Logiker als auch Theologe: "Die Große Kunst war Llull seinen Memoiren zufolge [...] 'von Gott offenbart' worden. Er wurde von da an auch Doctor illuminatus genannt."
                                                                                                                                                                                                            • 1679: Leibniz stützt sich auf Llulls Arbeit und entwickelt ein "Alphabet der menschlichen Kognition", mit dem Argumente nach festen Regeln mechanistisch ableitbar sein sollen
                                                                                                                                                                                                            • aber auch 1676: Leibniz leitet als Teil seiner Grundlagenforschung der Analysis die Kettenregel her
                                                                                                                                                                                                              • theoretische Grundlage für das Training mehrschichtiger ML-Systeme
                                                                                                                                                                                                              • damit durch Leibniz wichtige Vorarbeit für beide wesentlichen Lager der KI-Forschung, gemäß Einteilung von KI-Forscher Gary Marcus

                                                                                                                                                                                                                • symbolische Tradition (seit dem Mittelalter, s.o.): "In diesem Ansatz stehen Symbole und Variablen für Abstraktionen; mathematische und logische Funktionen machen den Kern aus. [Symbolische] Systeme repräsentieren Wissen im Allgemeinen explizit, oft in Datenbanken, und verwenden klassische Programmiersprachen (oder sind komplett in diesen verfasst)."
                                                                                                                                                                                                                • konnektionistische Tradition (seit 1940/1950): "[Konnektivistische] Systeme sind statistisch, sehr lose von bestimmten Aspekten des Gehirns inspiriert (z.B. sind 'Knoten' in neuralen Netzwerken als Abstraktion von Neuronen gedacht), und für gewöhnlich auf großen Datensätzen trainiert. Große Sprachmodelle (LLM) entwuchsen dieser Tradition."
                                                                                                                                                                                                                • Marcus skizziert die Geschichte der KI-Forschung als eine Geschichte der Spannung zwischen diesen Denkschulen
                                                                                                                                                                                                                • Xyrill beobachtet, dass dieser Dualismus zu seinen Beobachtungen über den Dualismus der menschlichen Intelligenz kongruent ist (vgl. System 1/2 in Daniel Kahnemans "Schnelles Denken, langsames Denken"; aber Vorsicht bzgl. Replizierbarkeit)
                                                                                                                                                                                                                • 1956: Dartmouth Conference, ein zweimonatiges Sommerseminar zu KI

                                                                                                                                                                                                                  • nicht die erste wissenschaftliche Aktivität zu KI mit Computern, aber historischer Einfluss durch die hohe Konzentration wichtiger Vertreter des Feldes (analog zu den Solvay-Konferenzen in der Physik)
                                                                                                                                                                                                                  • allein der erste Absatz des Förderantrags umreißt auch aus heutiger Sicht akkurat das ganze Feld (siehe Link unter "Durchführung")
                                                                                                                                                                                                                  • Personen auf der Konferenz (Auswahl)
                                                                                                                                                                                                                    • John McCarthy: Erfinder der Programmiersprache LISP
                                                                                                                                                                                                                    • Marvin Minsky: Vordenker der Robotik, Miterfinder der Programmiersprache Logo (Caveat: Verbindung zu Epstein)
                                                                                                                                                                                                                    • Nathaniel Rochester: 1955 bei IBM Experimente mit Neuronalen Netzwerken, Mustererkennung, Spielprogrammen, etc.
                                                                                                                                                                                                                    • Claude Shannon: Begründer der Informationstheorie; 1950 Konstruktion einer Robotermaus, die ein Labyrinth durchschreiten konnte
                                                                                                                                                                                                                    • Ray Solomonoff: präsentierte auf der Konferenz ein Programm, dass "arithmetische Formeln durch Beispiele ohne eingreifende Aufsicht" lernen konnte
                                                                                                                                                                                                                    • Oliver Selfridge: schlug 1958 eine Struktur für KI-Systeme als Netzwerk von Agenten ("Dämonen") vor, mit unterschiedlichen Arten von Agenten ("Feature Demons" für Mustererkennung, "Cognitive Demons" für Informationszusammenführung, "Decision Demons" für Entscheidungen)
                                                                                                                                                                                                                    • Allen Newell und Herbert A. Simon: 1956 Entwicklung eines Logiksystems, das im Stande war, die 38 Theoreme aus Bertrand Russells Principia Mathematica zu beweisen (vgl. moderne Theorem-Löser wie Rocq)
                                                                                                                                                                                                                    • 57 min
                                                                                                                                                                                                                    • STP088: Die Schlüsseltechnologie-Kochshow

                                                                                                                                                                                                                      Heute mal eine eher kurze Folge. Darin geht es ums Kochen und ähnliche Dinge und wie man sie verbinden könnte (oder auch nicht).

                                                                                                                                                                                                                      Shownotesttimeless kocht eines seiner geTeXten Rezepte:

                                                                                                                                                                                                                      • Präambel in einer Masterdatei
                                                                                                                                                                                                                      • Rezepte in einzelnen Dateien
                                                                                                                                                                                                                        • Hier das Hummusrezept wie von Andong auf seinem Youtube-Kanal vorgestellt: Can I Recreate the World's Smoothest Hummus?, dazu gibt es das passende Pita.
                                                                                                                                                                                                                        • Gesamtergebnis als PDF
                                                                                                                                                                                                                        • Xyrill kocht ein C++-Programm mit make(1):

                                                                                                                                                                                                                          • Grundproblem: im Kompilierungsmodell von C/C++ entsteht ein Programm in mehreren Schritten
                                                                                                                                                                                                                            • jede einzelne Quellcode-Datei wird einzeln vom Compiler in eine Objektdatei übersetzt
                                                                                                                                                                                                                            • am Ende werden alle Objektdateien vom Linker zu einer ausführbaren Programmdatei verknüpft
                                                                                                                                                                                                                            • als Beispiel ein kleines, vollständiges C-Programm
                                                                                                                                                                                                                            • Vorteile von Makefiles
                                                                                                                                                                                                                              • Universalsprache zum Dokumentieren von Prozessen
                                                                                                                                                                                                                              • Nachteile/Beschränkungen
                                                                                                                                                                                                                                • tw. arkane Syntax
                                                                                                                                                                                                                                • (fast?) turingvollständig, vgl. Ninja
                                                                                                                                                                                                                                • (unter anderem dadurch) vergleichsweise ineffizient, vgl. Tup
                                                                                                                                                                                                                                • moderne Programmiersprachen verwenden andere Kompilierkonzepte, meist fokussiert um Module aus mehreren Quelldateien
                                                                                                                                                                                                                                • 40 min

                                                                                                                                                                                                                                About Schlüsseltechnologie

                                                                                                                                                                                                                                From the publisher's feed

                                                                                                                                                                                                                                Die IT hat unser Leben in den letzten Jahrzehnten von Grund auf verändert. Aber wie funktioniert sie wirklich? Das möchte ttimeless mal erklärt bekommen. Zum Glück hat Xyrill Antworten.

                                                                                                                                                                                                                                More shows like Schlüsseltechnologie

                                                                                                                                                                                                                                Freak Show by Metaebene Personal Media - Tim Pritlove

                                                                                                                                                                                                                                Freak Show

                                                                                                                                                                                                                                9 Listeners

                                                                                                                                                                                                                                Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                                                                                                                                                                                                                                Lage der Nation - der Politik-Podcast aus Berlin

                                                                                                                                                                                                                                219 Listeners

                                                                                                                                                                                                                                Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                                                                                                                                                                                                                                Logbuch:Netzpolitik

                                                                                                                                                                                                                                5 Listeners