I mean, correcting a LLM until it spews out something that mostly works is just good old shotgun debugging, prove me wrong
No no, that’s a very valid point. Get an llm to write this article, submit it $techcurrenteventszine and someone pay this man!
Personally, I feel like it has most resemblance with empirical science. So, not really much to do with programming or software engineering…
That’s also why it falls in the area of data science. You develop a model based on available papers of similar tasks and refine the model and training with statistical methods.
Is an LLM machine learning? In ML you are usually predicting a value based on values in the training set. That’s not really what an LLM does it seems. Maybe it uses some ML under the hood.
LLM is pretty much guessing the next word
In ML you are usually predicting a value based on values in the training set
No, that’s just a small part of ML: Supervised learning. There also is unsupervised learning, reinforcement learning and a whole bunch of other things in machine learning; It’s a way bigger field than just that.
And about your question: Yeah, LLMs are a prime example of machine learning. Very simplified, they use a kind of recurrent neural network to take inputs of arbitrary lengths and give outputs. They are trained on huge loads of data (text) to auto-complete the data (so that they get e.g. a sentence as input and give a second sentence that’s likely the next sentence in the data as output). E.g. “Today I went” as input could generate “to school.” as output.
ChatGPT is based on these LLMs like GPT-4 in the way that the start of the input data is commands in human language for the bot how to behave. (E.g. “You are called ChatGPT. You are not allowed to […]. You are helpful and friendly.”), then adding the user input. The LLM then generates what the chatbot described with the given characteristics would give as an output based on the training set and it’s returned as the output by ChatGPT.
How else would you write code? you write it, you run it, and do it again until it works.
Back in my ancient college days, compilers (C, FORTRAN) would take like 5 minutes or more, so it was really important to code carefully.
It’s rather about changing things randomly.
Ideally, you work out the requirements. Then you formulate those requirements in code, via the static type system and/or automated unit+integration tests. And then you implement your code to match those requirements (compiler stops complaining and tests are green).
Ideally, you don’t have to actually run the whole application to feel confident enough about your changes, although obviously you would still do that eventually, for example before publishing a release.
It’s rather about changing things randomly.
I do this all the time when working with transformations (in personal projects). I know I need to take into account these 5 variables but I’m not sure exactly how they all fit together, and I really don’t want to get a pen and paper out, so I just shuffle things and their operators about until it works or I get bored and do something else.
brute force programming
I tried to learn machine learning but it was incredibly boring.
I mean, everyone has their own preferences. It’s okay if you don’t like it.
I don’t think you can say it’s boring in general though. I personally think it’s super fascinating.
I found it quite interesting, but we had a more theoretical focus. It is still a good bit of “magic” to me. Especially the whole Kernel stuff.
Have you tried building simple ones to solve game puzzles? It’s actually fun