7 Ting at Fokusere på som ML-Nørd i 2024

Jeg tror, mange af os ML-nørder undervurderer, hvor meget indsigt vi har i den udvikling, der sker inden for generativ AI lige nu.

Som jeg ser det er 2024 en fantastisk mulighed for at øge vores indsigt yderligere og på den måde gøre vores viden endnu mere værdifuld i 2025 💎

Jeg tror jeg at vi som ML-nørder i 2024 bør fokusere på følgende:

  1. Vær hands-on. Ha’ fingrene i bolledejen og nyd at være i bygge processen. Ha’ fingrene i bolledejen og nyd at være i bygge processen. Engineering er en blanding af håndværk og teori, men det står sparsomt til med teorien inden for det her felt, så som jeg ser det er hands-on den eneste vej. Så skriver vi teorien bagefter.
  2. Fokuser på ægte anvendelighed. Løser det du laver et reelt problem? Eller er det et problem som du tror nogen har, men som ingen i virkeligeheden har? Optimer for virklige problemer.
  3. Hold dig orienteret om, hvad der sker i feltet, og hold dig opdateret på den seneste viden og de nyeste open source-projekter.
  4. Dan din egen unikke mening om hvordan man bygger med generativ AI. Del den med andre. Få deres input. Bliv klogere. Gentag.
  5. Vær opmærksom på “fascinations bias”. Nogle gange bliver en teknologi/metode hypet, fordi man kan lave en fascinerende demo med den. Forsøg at se igennem fascinationen. Der kan være aspekter af metoden, som er brugbare, men det er meget muligt, at selve fascinationen orienterer folk i en forkert retning. Zoom ud, vær kritisk, og skær fascinationen fra.
  6. Slå koldt vand i blodet. Giv en kæmpe f***-finger til FOMO. Du kan ikke vide det hele, og det skal nok gå alligevel. Glem det der unicorn start-up som alle siger der er kæmpe mulighed for at start lige nu (med mindre du er i gang med at lave sådan et start-up selvfølgelige 😅). Bare gør hvad du kan for at sikre, at du opfylder punkt 2, så skal du nok bevæge dig i den rigtige retning.
  7. Husk at det er mega svært det her, og der er ikke nødvendigvis nogle best practices og rigtige svar for det du sidder og laver. Det er det vi skal opfinde sammen i 2024!


2023: Tanker om AI, Software og Teknologi

Ting som jeg har læst, tænkt, noteret, spekuleret over etc. i 2023 som her er serveret som et råt brain-dump. Da det er rimelig råt, så kan redundans forekomme 🙃

  1. Meget tyder på, at deep learning-modeller lærer det, der er at lære i de data, de trænes med. Hvis de ikke lærer det, skyldes det enten uklarheder i data eller at der ikke er tilstrækkelig information i data til at løse opgaven (se Universal Approximation Theorem). Fremtidige fremskridt i AI vil derfor sandsynligvis i højere grad blive gjort mulige ved at udvikle metoder til at tilvejebringe data af højere kvalitet end ved at udvikle nye modelarkitekturer.
  2. Alle undervurderer evaluering af sprogmodeller. Det er ærgerligt, da evaluering kommer til at blive noget af det vigtigste at tage seriøst, hvis man vil lave imponerende og værdifulde ting med LLM'er. Derfor, væn dig til at tænke i evaluering af AI-systemer, og gå aldrig i gang med et AI-projekt uden at have en strategi for evalueringen af det. Evalueringen behøver ikke at være perfekt fra starten, og man skal regne med at udvikle evalueringen af systemet løbende.
  3. Når du arbejder med teknologi, bør brugernes behov altid komme før teknologien. En "bruger-først"-tankegang er afgørende for succes, i modsætning til en "teknologi-først"-tankegang. Det lyder virkelig som en floskel, men det er seriøst vigtigt, og det kræver disciplin at praktisere.
  4. Mennesker har en forenklet forståelse af, hvordan verden faktisk er. Det kan være meget uproduktivt at bilde sig selv ind, at ens forståelse af verden er perfekt. Hvis man gør det, ender man med at sidde med sine peers i et mødelokale og bilde sig selv ind, at man kan diskutere sig frem til, hvad ens brugere vil have. Det er i høj grad nemmere sagt end gjort og kræver disciplin konstant at udfordre sit syn på verden.
  5. Den generelle sprogforståelse i store sprogmodeller (LLM'er) er totalt undervurderet. Med LLM'er er det blevet mange tusinde gange billigere og hurtigere at lave et proof of concept på skræddersyede NLP-klassificeringsmodeller end tidligere – det kan nu praktisk talt gøres gratis. Det giver et kæmpe potientiale for at udvikle "oldschool" NLP, som rigtig mange overser, fordi det generative aspekt af LLM'er er så fascinerende.
  6. En brugbar måde at tænke på store sprogmodeller (LLM'er) er som et nyt interface, på linje med smartphonen, der hjælper brugere med at interagere med software. Smartphonen gjorde interaktionen med software mere mobil. LLM'er gør interaktion med software mere naturlig og kan håndtere en hel masse kompleksitet for brugeren. Gode eksempler er virksomheder, der har et komplekst produkt, som er svært for brugerne at betjene, navigere og forstå selv, fx et regnskabsprogram eller en bank. På nuværende tidspunkt er brugerens interface til de komplekse produkter ofte kundeservice. Det kommer LLM'er til at kunne hjælpe kundeservicemedarbejdere med og på sigt overtage helt. Rent engineeringmæssigt tænk:
    1. Input: Brugerintention formuleret i naturligt sprog.
    2. Mellemliggende output/input: Opfølgende spørgsmål og svar.
    3. Endelig output: Sekvens af funktionskald i det relevante software.
  7. Hvis store sprogmodeller (LLM'er) fortsætter med at blive mindre, hurtigere og billigere med samme hastighed, som de har gjort i 2023, så kan de skabe muligheder som at svære at forestille sig på nuværende tidspunkt på samme måde, som fremskridt i computerkraft har gjort det ifølge Moores lov.
  8. Udviklingen inden for 7B LLM-modeller går så stærkt, fordi de er tilgængelige at køre, træne og eksperimentere med for open source-entusiaster.
  9. Teknologifascination skygger ofte for virkelige forretningsproblemer.
  10. Hvis man bruger meget tid på at tale om AI use-cases frem for forretningsproblemer, er det enten fordi man er i gang med at lære at forstå, hvad AI grundlæggende kan, eller også er man som ekspert i gang med at formidle/sælge AI-løsninger til nogen, som ikke forstår det.
  11. Hvorvidt en teknologi er en succes, er 100% korreleret med hvor meget den bliver brugt. Biler er en succesfuld teknologi, fordi de bliver brugt. ChatGPT er en succes, fordi den bliver brugt. Tandbørster er en succes, fordi de bliver brugt. Så hvis du gerne vil lave teknologi, som bliver en succes, så handler det om at få nogen til at bruge din teknologi.

Language First

Ten years ago, many companies were concerned with a concept called "Mobile First," which prioritized developing software that worked well on a new interface gaining massive user adoption: the smartphone.

Within the near future, many companies will be concerned with a concept known as "Language First." This approach involves developing software that works well with an emerging interface gaining widespread use: Large Language Models (LLMs).

The chatbot interface has made LLMs famous. However, many things are pointing towards LLMs being not only great for chat but also for interacting with software systems through language. Because of the LLMs' reasoning capabilities and their ability to use tools, this new interface can help humans handle much of the cognitive load involved in learning and using complex systems.

In the near future, we as humans will be able to interact with much more complex software systems without being experts. Imagine if everyone could handle the most complex systems relevant in their daily lives as an expert would.

So, how are we as software developers going to design software for this future where "Language First" principles are going to dominate?

As the "Mobile First" paradigm was obsessed with graphical user interfaces and user experiences, the "Language First" paradigm will be obsessed with user intent. 

What problems does the user have that they can express in plain, non-expert layman language, and how can we use AI to understand it and orchestrate functionality to help the user achieve their goal?

This will involve organizing systems of prompts to build the reasoning framework for orchestrating functionality. Also it will involve indexing and organizing functionality (basically endpoints) and processes to give the LLMs the best possible conditions to do a good job.

Much like search intent which is a big thing in natural language information search, user intent will be the main focus in functionality search and execution.

To be continued... (I'm not done writing yet 😅)

Beautiful AI-based Products

If your product has a UX element that aligns user interactions with the goal of your AI models, then you have a beautifully machine-learning-based product.

Think of Midjourney. You write a prompt, get 4 generated images. Midjourney's goal is to generate the best possible images given a prompt. The user's desire is to get the best possible image from a prompt. There is 100% alignment between the product's and the user's goals. And you don't need to give advanced instructions to Midjourney users on selecting the best picture. Their human intuition guides them effortlessly. The result is invaluable data for Midjourney to train their models.

Think of Netflix. Occasionally, while you're watching Netflix, you will be asked, 'Are you still watching X?' Netflix understands how crucial this subtle piece of information is for their recommender systems and the user experience of the product. The recommender system needs to know if you are actually watching to determine what to recommend next. And if you fell asleep, it's convenient that Netflix can predict this and automatically stop the series for you, so you don't have to search for where you stopped watching. When you are prompted with 'Are you still watching X?', you as a user have a 100% interest and need to give Netflix almost the perfect information they need to evaluate their system.

More examples of products that do this are Google Search and every social media feed. Huge companies are built by integrating UX and AI to craft superior products. Yet, not many consider AI and UX in this integrated manner. It should be a consideration in every UX decision made.

Prompting Patterns: The Clarification Pattern

The more I use ChatGPT and develop software using LLM APIs, the more I realize that context is essential for LLMs to provide high-quality answers. When I use ChatGPT and receive unsatisfactory answers, it's typically due to a lack of information about the problem I'm presenting or my current situation. I often notice that I might be ambiguous about the task I want ChatGPT to solve, or ChatGPT perceives the issue in a manner I hadn't anticipated. However, I've observed that by adopting a simple pattern, I can significantly reduce these challenges, consistently leading to more accurate responses.

The pattern is as follows:

  1. Me: I instruct ChatGPT to perform a task. I tell it not to respond immediately but to ask clarifying questions if any aspect of my instruction is unclear.
  2. ChatGPT: Asks clarifying questions.
  3. Me: I answer the questions and tell it again not to execute the instruction but to ask further clarifying questions if any part of my answers is unclear.
  4. ChatGPT: It does one of two things.
    a) Asks additional clarifying questions. If this happens, return to step 3.
    b) Indicates it has no further questions. If this is the case, proceed to step 5.
  5. Me: I give the command to execute the instruction.

I call this the "Clarification Pattern." Recognizing this approach shifted my perspective from viewing prompt engineering solely as individual prompts to thinking in terms of human-AI conversations. Through these dialogues, I can build valuable context by clarifying ambiguities in both my understanding and that of ChatGPT, thus providing ChatGPT with the optimal conditions to deliver an excellent response.