VibeBuilders.ai Logo
VibeBuilders.ai

All Resources

0-20+ faceless AI automated YouTube channels in 1 year - my process and tools
reddit
LLM Vibe Score0
Human Vibe Score1
thewolfofsloveniaThis week

0-20+ faceless AI automated YouTube channels in 1 year - my process and tools

First of all before diving deep into this process (scroll a bit below) I have to say something that everyone keeps asking me, is it profitable? Yes. It's by far my most profitable venture outside of my regular 9-5... But it took a lot of work, delegation and building processes to get here. So the one thing I would love to get out of this post - if you have any insights, feedback or tools I might be missing out post them below and let's help each other out. Now, how you can get started with (AI) YouTube automation: Pick a topic that is BOTH: a) in demand b) interesting to you & you have knowledge about Do everything yourself at first - delegate later No one cares about the videos as much as you do, so make sure to nail the ideation, scripts, editing, format and packaging yourself first. Now that we got that out of the way: Use this workflow: VidIQ - outliers sections is pure gold, I use it all the time to find trending video packaging, topics, etc. ChatGPT or Claude - high level video ideas at scale and your assistant (I use projects inside ChatGPT and its really good at managing and prioritizing). If you are using it for scripts please for the love of god, make final edits yourself by hand. Add character, personal insights, ideas, etc. Katalist AI - all in one video generator tool I use to quickly go from video idea to script, storyboard, AI voiceover and then final visuals. It's surprisingly good and to make a decent video it only takes about 1-2 hours in TOTAL. Once you understand how it works and have a process, delegate to tech savvy VAs / content creators for $5-$15/hour and you have final, good quality videos for less than $30. Pikzels / Krea AI - your AI thumbnail generator, I dont remember the last time we used Photoshop outside of quick text or image edits. Its basically AI image manipulation at scale and it costs 10-30x less than a human thumbnail designer and the thumbnails are really good. VidIQ+TubeBuddy - titles & optimization, but you have to know that most of the views come usually from recommended, so dont over obsess and add 392x keywords in your title and description. Its all about the packaging. Now whats left is track performance & iterate - it's practically impossible to nail it the first few times, but each video you make look at the data (not just in YT studio) and UNDERSTAND why it did not perform as well as you thought it would. Regarding monetization, adsense sucks - sell digital products. If I was relying on adsense alone I would never ever be profitable, but selling mini digital products and mentioning CTAs in the actual video not just in the description makes this super profitable and scaleable, especially since video production is so cheap. Final thoughts: (AI) YouTube automation absolutely works, but it’s not an overnight success or a total hands-off cashcow machine. It’s a real business and you need systems, consistent effort, iteration, failing and learning along the way. If you’ve got any tips, hidden gems or tools I might be missing, drop them below & let’s help each other out.

[P] Building an Reinforcement Learning Agent to play The Legend of Zelda
reddit
LLM Vibe Score0
Human Vibe Score1
DarkAutumnThis week

[P] Building an Reinforcement Learning Agent to play The Legend of Zelda

A year go I started trying to use PPO to play the original Legend of Zelda, and I was able to train a model to beat the first boss after a few months of work. I wanted to share the project just for show and tell. I'd love to hear feedback and suggestions as this is just a hobby project. I don't do this for a living. The code for that lives in the original-design branch of my Triforce repo. I'm currently tinkering with new designs so the main branch is much less stable. Here's a video of the agent beating the first dungeon, which was trained with 5,000,000+ steps. At 38 seconds, you can see it learned that it's invulnerable at the screen edge, and it exploits that to avoid damage from a projectile. At 53 seconds it steps up to avoid damage from an unblockable projectile, even though it takes a -0.06 penalty for moving the wrong way (taking damage would be a larger penalty.) At 55 seconds it walks towards the rock projectile to block it. And so on, lots of little things the model does is easy to miss if you don't know the game inside and out. As a TLDR, here's an early version of my new (single) model. This doesn't make it quite as far, but if you watch closely it's combat is already far better, and is only trained on 320,000 steps (~6% of the steps the first model was trained on). This is pretty far along from my very first model. Original Design I got the original project working using stable-baselines's PPO and default neural network (Shared NatureCNN, I believe). SB was great to get started but ultimately stifling. In the new version of the project I've implemented PPO from scratch with torch with my own simple neural network similar to stable-baseline's default. I'm playing with all kinds of changes and designs now that I have more flexibility and control. Here is my rough original design: Overall Strategy My first pass through this project was basically "imagine playing Zelda with your older sibling telling you where to go and what to do". I give the model an objective vector which points to where I want it to go on the screen (as a bird flies, the agent still had to learn path finding to avoid damage and navigate around the map). This includes either point at the nearest enemy I want it to kill or a NSEW vector if it's supposed to move to the next room. Due a few limitations with stable-baselines (especially around action masking), I ended up training unique models for traversing the overworld vs the dungeon (since they have entirely different tilesets). I also trained a different model for when we have sword beams vs not. In the video above you can see what model is being used onscreen. In my current project I've removed this objective vector as it felt too much like cheating. Instead I give it a one-hot encoded objective (move north to the next room, pickup items, kill enemies, etc). So far it's working quite well without that crutch. The new project also does a much better job of combat even without multiple models to handle beams vs not. Observation/Action Space Image - The standard neural network had a really tough time being fed the entire screen. No amount of training seemed to help. I solved this by creating a viewport around Link that keeps him centered. This REALLY helped the model learn. I also had absolutely zero success with stacking frames to give Link a way to see enemy/projectile movement. The model simply never trained with stable-baselines when I implemented frame stacking and I never figured out why. I just added it to my current neural network and it seems to be working... Though my early experiments show that giving it 3 frames (skipping two in between, so frames curr, curr-3, curr-6) doesn't really give us that much better performance. It might if I took away some of the vectors. We'll see. Vectors - Since the model cannot see beyond its little viewport, I gave the model a vector to the closest item, enemy, and projectile onscreen. This made it so the model can shoot enemies across the room outside of its viewport. My new model gives it multiple enemies/items/projectiles and I plan to try to use an attention mechanism as part of the network to see if I can just feed it all of that data. Information - It also gets a couple of one-off datapoints like whether it currently has sword beams. The new model also gives it a "source" room (to help better understand dungeons where we have to backtrack), and a one-hot encoded objective. Action Space My original project just has a few actions, 4 for moving in the cardinal directions and 4 for attacking in each direction (I also added bombs but never spent any time training it). I had an idea to use masking to help speed up training. I.E. if link bumps into a wall, don't let him move in that direction again until he moves elsewhere, as the model would often spend an entire memory buffer running headlong straight into a wall before an update...better to do it once and get a huge negative penalty which is essentially the same result but faster. Unfortunately SB made it really annoying architecturally to pass that info down to the policy layer. I could have hacked it together, but eventually I just reimplemented PPO and my own neural network so I could properly mask actions in the new version. For example, when we start training a fresh model, it cannot attack when there aren't enemies on screen and I can disallow it from leaving certain areas. The new model actually understands splitting swinging the sword short range vs firing sword beams as two different actions, though I haven't yet had a chance to fully train with the split yet. Frameskip/Cooldowns - In the game I don't use a fixed frame skip for actions. Instead I use the internal ram state of game to know when Link is animation locked or not and only allow the agent to take actions when it's actually possible to give meaningful input to the game. This greatly sped up training. We also force movement to be between tiles on the game map. This means that when the agent decides to move it loses control for longer than a player would...a player can make more split second decisions. This made it easier to implement movement rewards though and might be something to clean up in the future. Other interesting details Pathfinding - To facilitate rewards, the original version of this project used A* to pathfind from link to what he should be doing. Here's a video of it in action. This information wasn't giving to the model directly but instead the agent would only be given the rewards if it exactly followed that path or the transposed version of it. It would also pathfind around enemies and not walk through them. This was a nightmare though. The corner cases were significant, and pushing Link towards enemies but not into them was really tricky. The new verison just uses a wavefront algorithm. I calculate a wave from the tiles we want to get to outwards, then make sure we are following the gradient. Also calculating the A* around enemies every frame (even with caching) was super slow. Wavefront was faster, especially because I give the new model no special rewards for walking around enemies...faster to compute and it has to learn from taking damage or not. Either way, the both the old and new models successfully learned how to pathfind around danger and obstacles, with or without the cheaty objective vector. Rewards - I programmed very dense rewards in both the old and new model. At basically every step, the model is getting rewarded or punished for something. I actually have some ideas I can't wait to try out to make the rewards more sparse. Or maybe we start with dense rewards for the first training, then fine-tune the model with sparser rewards. We'll see. Predicting the Future - Speaking of rewards. One interesting wrinkle is that the agent can do a lot of things that will eventually deal damage but not on that frame. For example, when Link sets a bomb it takes several seconds before it explodes, killing things. This can be a massive reward or penalty since he spent an extremely valuable resource, but may have done massive damage. PPO and other RL propagates rewards backwards, of course, but that spike in reward could land on a weird frame where we took damage or moved in the wrong direction. I probably could have just not solved that problem and let it shake out over time, but instead I used the fact that we are in an emulator to just see what the outcome of every decision is. When planting a bomb, shooting sword beams, etc, we let the game run forward until impact, then rewind time and reward the agent appropriately, continuing on from when we first paused. This greatly speeds up training, even if it's expensive to do this savestate, play forward, restore state. Neural Networks - When I first started this project (knowing very little about ML and RL), I thought most of my time would be tuning the shape of the neural network that we are using. In reality, the default provided by stable-baselines and my eventual reimplemnentation has been enough to make massive progress. Now that I have a solid codebase though, I really want to revisit this. I'd like to see if trying CoordConvs and similar networks might make the viewport unncessary. Less interesting details/thoughts Hyperparameters - Setting the entropy coefficinet way lower helped a TON in training stable models. My new PPO implementation is way less stable than stable-baselines (ha, imagine that), but still converges most of the time. Infinite Rewards - As with all reinforcement learning, if you give some way for the model to get infinite rewards, it will do just that and nothing else. I spent days, or maybe weeks tweaking reward functions to just get it to train and not find a spot on the wall it could hump for infinite rewards. Even just neutral rewards, like +0.5 moving forward and -0.5 for moving backwards, would often result in a model that just stepped left, then right infinitely. There has to be a real reward or punishment (non-neutral) for forward progress. Debugging Rewards - In fact, building a rewards debugger was the only way I made progress in this project. If you are tackling something this big, do that very early. Stable-Retro is pretty great - Couldn't be happier with the clean design for implementing emulation for AI. Torch is Awesome - My early versions heavily used numpy and relied on stable-baselines, with its multiproc parallelization support. It worked great. Moving the project over to torch was night and day though. It gave me so much more flexibility, instant multithreading for matrix operations. I have a pretty beefy computer and I'm almost at the same steps per second as 20 proc stable-retro/numpy. Future Ideas This has already gone on too long. I have some ideas for future projects, but maybe I'll just make them another post when I actually do them. Special Thanks A special thanks to Brad Flaugher for help with the early version of this, Fiskbit from the Zelda1 speedrunning community for help pulling apart the raw assembly to build this thing, and MatPoliquin for maintaining Stable-Retro. Happy to answer any questions, really I just love nerding out about this stuff.

[D] Why I'm Lukewarm on Graph Neural Networks
reddit
LLM Vibe Score0
Human Vibe Score0.6
VodkaHazeThis week

[D] Why I'm Lukewarm on Graph Neural Networks

TL;DR: GNNs can provide wins over simpler embedding methods, but we're at a point where other research directions matter more I also posted it on my blog here, has footnotes, a nicer layout with inlined images, etc. I'm only lukewarm on Graph Neural Networks (GNNs). There, I said it. It might sound crazy GNNs are one of the hottest fields in machine learning right now. [There][1] were at least [four][2] [review][3] [papers][4] just in the last few months. I think some progress can come of this research, but we're also focusing on some incorrect places. But first, let's take a step back and go over the basics. Models are about compression We say graphs are a "non-euclidean" data type, but that's not really true. A regular graph is just another way to think about a particular flavor of square matrix called the [adjacency matrix][5], like this. It's weird, we look at run-of-the-mill matrix full of real numbers and decide to call it "non-euclidean". This is for practical reasons. Most graphs are fairly sparse, so the matrix is full of zeros. At this point, where the non-zero numbers are matters most, which makes the problem closer to (computationally hard) discrete math rather than (easy) continuous, gradient-friendly math. If you had the full matrix, life would be easy If we step out of the pesky realm of physics for a minute, and assume carrying the full adjacency matrix around isn't a problem, we solve a bunch of problems. First, network node embeddings aren't a thing anymore. A node is a just row in the matrix, so it's already a vector of numbers. Second, all network prediction problems are solved. A powerful enough and well-tuned model will simply extract all information between the network and whichever target variable we're attaching to nodes. NLP is also just fancy matrix compression Let's take a tangent away from graphs to NLP. Most NLP we do can be [thought of in terms of graphs][6] as we'll see, so it's not a big digression. First, note that Ye Olde word embedding models like [Word2Vec][7] and [GloVe][8] are [just matrix factorization][9]. The GloVe algorithm works on a variation of the old [bag of words][10] matrix. It goes through the sentences and creates a (implicit) [co-occurence][11] graph where nodes are words and the edges are weighed by how often the words appear together in a sentence. Glove then does matrix factorization on the matrix representation of that co-occurence graph, Word2Vec is mathematically equivalent. You can read more on this in my [post on embeddings][12] and the one (with code) on [word embeddings][13]. Even language models are also just matrix compression Language models are all the rage. They dominate most of the [state of the art][14] in NLP. Let's take BERT as our main example. BERT predicts a word given the context of the rest of the sentence. This grows the matrix we're factoring from flat co-occurences on pairs of words to co-occurences conditional on the sentence's context, like this We're growing the "ideal matrix" we're factoring combinatorially. As noted by [Hanh & Futrell][15]: [...] human language—and language modelling—has infinite statistical complexity but that it can be approximated well at lower levels. This observation has two implications: 1) We can obtain good results with comparatively small models; and 2) there is a lot of potential for scaling up our models. Language models tackle such a large problem space that they probably approximate a compression of the entire language in the [Kolmogorov Complexity][16] sense. It's also possible that huge language models just [memorize a lot of it][17] rather than compress the information, for what it's worth. Can we upsample any graph like language models do? We're already doing it. Let's call a first-order embedding of a graph a method that works by directly factoring the graph's adjacency matrix or [Laplacian matrix][18]. If you embed a graph using [Laplacian Eigenmaps][19] or by taking the [principal components][20] of the Laplacian, that's first order. Similarly, GloVe is a first-order method on the graph of word co-occurences. One of my favorites first order methods for graphs is [ProNE][21], which works as well as most methods while being two orders of magnitude faster. A higher-order method embeds the original matrix plus connections of neighbours-of-neighbours (2nd degree) and deeper k-step connections. [GraRep][22], shows you can always generate higher-order representations from first order methods by augmenting the graph matrix. Higher order method are the "upsampling" we do on graphs. GNNs that sample on large neighborhoods and random-walk based methods like node2vec are doing higher-order embeddings. Where are the performance gain? Most GNN papers in the last 5 years present empirical numbers that are useless for practitioners to decide on what to use. As noted in the [OpenGraphsBenchmark][4] (OGB) paper, GNN papers do their empirical section on a handful of tiny graphs (Cora, CiteSeer, PubMed) with 2000-20,000 nodes. These datasets can't seriously differentiate between methods. Recent efforts are directly fixing this, but the reasons why researchers focused on tiny, useless datasets for so long are worth discussing. Performance matters by task One fact that surprises a lot of people is that even though language models have the best performance in a lot of NLP tasks, if all you're doing is cram sentence embeddings into a downstream model, there [isn't much gained][23] from language models embeddings over simple methods like summing the individual Word2Vec word embeddings (This makes sense, because the full context of the sentence is captured in the sentence co-occurence matrix that is generating the Word2Vec embeddings). Similarly, [I find][24] that for many graphs simple first-order methods perform just as well on graph clustering and node label prediction tasks than higher-order embedding methods. In fact higher-order methods are massively computationally wasteful for these usecases. Recommended first order embedding methods are ProNE and my [GGVec with order=1][25]. Higher order methods normally perform better on the link prediction tasks. I'm not the only one to find this. In the BioNEV paper, they find: "A large GraRep order value for link prediction tasks (e.g. 3, 4);a small value for node classification tasks (e.g.1, 2)" (p.9). Interestingly, the gap in link prediction performance is inexistant for artificially created graphs. This suggests higher order methods do learn some of the structure intrinsic to [real world graphs][26]. For visualization, first order methods are better. Visualizations of higher order methods tend to have artifacts of their sampling. For instance, Node2Vec visualizations tend to have elongated/filament-like structures which come from the embeddings coming from long single strand random walks. See the following visualizations by [Owen Cornec][27] created by first embedding the graph to 32-300 dimensions using a node embedding algorithm, then mapping this to 2d or 3d with the excellent UMAP algorithm, like this Lastly, sometimes simple methods soundly beat higher order methods (there's an instance of it in the OGB paper). The problem here is that we don't know when any method is better than another and we definitely don't know the reason. There's definitely a reason different graph types respond better/worse to being represented by various methods. This is currently an open question. A big part of why is that the research space is inundated under useless new algorithms because... Academic incentives work against progress Here's the cynic's view of how machine learning papers are made: Take an existing algorithm Add some new layer/hyperparameter, make a cute mathematical story for why it matters Gridsearch your hyperparameters until you beat baselines from the original paper you aped Absolutely don't gridsearch stuff you're comparing against in your results section Make a cute ACRONYM for your new method, put impossible to use python 2 code on github (Or no code at all!) and bask in the citations I'm [not][28] the [only one][29] with these views on the state reproducible research. At least it's gotten slightly better in the last 2 years. Sidebar: I hate Node2Vec A side project of mine is a [node embedding library][25] and the most popular method in it is by far Node2Vec. Don't use Node2Vec. [Node2Vec][30] with p=1; q=1 is the [Deepwalk][31] algorithm. Deepwalk is an actual innovation. The Node2Vec authors closely followed the steps 1-5 including bonus points on step 5 by getting word2vec name recognition. This is not academic fraud -- the hyperparameters [do help a tiny bit][32] if you gridsearch really hard. But it's the presentable-to-your-parents sister of where you make the ML community worse off to progress your academic career. And certainly Node2Vec doesn't deserve 7500 citations. Progress is all about practical issues We've known how to train neural networks for well over 40 years. Yet they only exploded in popularity with [AlexNet][33] in 2012. This is because implementations and hardware came to a point where deep learning was practical. Similarly, we've known about factoring word co-occurence matrices into Word embeddings for at least 20 years. But word embeddings only exploded in 2013 with Word2Vec. The breakthrough here was that the minibatch-based methods let you train a Wikipedia-scale embedding model on commodity hardware. It's hard for methods in a field to make progress if training on a small amount of data takes days or weeks. You're disincentivized to explore new methods. If you want progress, your stuff has to run in reasonable time on commodity hardware. Even Google's original search algorithm [initially ran on commodity hardware][34]. Efficiency is paramount to progress The reason deep learning research took off the way it did is because of improvements in [efficiency][35] as well as much better libraries and hardware support. Academic code is terrible Any amount of time you spend gridsearching Node2Vec on p and q is all put to better use gridsearching Deepwalk itself (on number of walks, length of walks, or word2vec hyperparameters). The problem is that people don't gridsearch over deepwalk because implementations are all terrible. I wrote the [Nodevectors library][36] to have a fast deepwalk implementation because it took 32 hours to embed a graph with a measly 150,000 nodes using the reference Node2Vec implementation (the same takes 3min with Nodevectors). It's no wonder people don't gridsearch on Deepwalk a gridsearch would take weeks with the terrible reference implementations. To give an example, in the original paper of [GraphSAGE][37] they their algorithm to DeepWalk with walk lengths of 5, which is horrid if you've ever hyperparameter tuned a deepwalk algorithm. From their paper: We did observe DeepWalk’s performance could improve with further training, and in some cases it could become competitive with the unsupervised GraphSAGE approaches (but not the supervised approaches) if we let it run for >1000× longer than the other approaches (in terms of wall clock time for prediction on the test set) I don't even think the GraphSAGE authors had bad intent -- deepwalk implementations are simply so awful that they're turned away from using it properly. It's like trying to do deep learning with 2002 deep learning libraries and hardware. Your architectures don't really matter One of the more important papers this year was [OpenAI's "Scaling laws"][38] paper, where the raw number of parameters in your model is the most predictive feature of overall performance. This was noted even in the original BERT paper and drives 2020's increase in absolutely massive language models. This is really just [Sutton' Bitter Lesson][39] in action: General methods that leverage computation are ultimately the most effective, and by a large margin Transformers might be [replacing convolution][40], too. As [Yannic Kilcher said][41], transformers are ruining everything. [They work on graphs][6], in fact it's one of the [recent approaches][42], and seems to be one of the more succesful [when benchmarked][1] Researchers seem to be putting so much effort into architecture, but it doesn't matter much in the end because you can approximate anything by stacking more layers. Efficiency wins are great -- but neural net architectures are just one way to achieve that, and by tremendously over-researching this area we're leaving a lot of huge gains elsewhere on the table. Current Graph Data Structure Implementations suck NetworkX is a bad library. I mean, it's good if you're working on tiny graphs for babies, but for anything serious it chokes and forces you to rewrite everything in... what library, really? At this point most people working on large graphs end up hand-rolling some data structure. This is tough because your computer's memory is a 1-dimensional array of 1's and 0's and a graph has no obvious 1-d mapping. This is even harder when we take updating the graph (adding/removing some nodes/edges) into account. Here's a few options: Disconnected networks of pointers NetworkX is the best example. Here, every node is an object with a list of pointers to other nodes (the node's edges). This layout is like a linked list. Linked lists are the [root of all performance evil][43]. Linked lists go completely against how modern computers are designed. Fetching things from memory is slow, and operating on memory is fast (by two orders of magnitude). Whenever you do anything in this layout, you make a roundtrip to RAM. It's slow by design, you can write this in Ruby or C or assembly and it'll be slow regardless, because memory fetches are slow in hardware. The main advantage of this layout is that adding a new node is O(1). So if you're maintaining a massive graph where adding and removing nodes happens as often as reading from the graph, it makes sense. Another advantage of this layout is that it "scales". Because everything is decoupled from each other you can put this data structure on a cluster. However, you're really creating a complex solution for a problem you created for yourself. Sparse Adjacency Matrix This layout great for read-only graphs. I use it as the backend in my [nodevectors][25] library, and many other library writers use the [Scipy CSR Matrix][44], you can see graph algorithms implemented on it [here][45]. The most popular layout for this use is the [CSR Format][46] where you have 3 arrays holding the graph. One for edge destinations, one for edge weights and an "index pointer" which says which edges come from which node. Because the CSR layout is simply 3 arrays, it scales on a single computer: a CSR matrix can be laid out on a disk instead of in-memory. You simply [memory map][47] the 3 arrays and use them on-disk from there. With modern NVMe drives random seeks aren't slow anymore, much faster than distributed network calls like you do when scaling the linked list-based graph. I haven't seen anyone actually implement this yet, but it's in the roadmap for my implementation at least. The problem with this representation is that adding a node or edge means rebuilding the whole data structure. Edgelist representations This representation is three arrays: one for the edge sources, one for the edge destinations, and one for edge weights. [DGL][48] uses this representation internally. This is a simple and compact layout which can be good for analysis. The problem compared to CSR Graphs is some seek operations are slower. Say you want all the edges for node #4243. You can't jump there without maintaining an index pointer array. So either you maintain sorted order and binary search your way there (O(log2n)) or unsorted order and linear search (O(n)). This data structure can also work on memory mapped disk array, and node append is fast on unsorted versions (it's slow in the sorted version). Global methods are a dead end Methods that work on the entire graph at once can't leverage computation, because they run out of RAM at a certain scale. So any method that want a chance of being the new standard need to be able to update piecemeal on parts of the graph. Sampling-based methods Sampling Efficiency will matter more in the future Edgewise local methods. The only algorithms I know of that do this are GloVe and GGVec, which they pass through an edge list and update embedding weights on each step. The problem with this approach is that it's hard to use them for higher-order methods. The advantage is that they easily scale even on one computer. Also, incrementally adding a new node is as simple as taking the existing embeddings, adding a new one, and doing another epoch over the data Random Walk sampling. This is used by deepwalk and its descendants, usually for node embeddings rather than GNN methods. This can be computationally expensive and make it hard to add new nodes. But this does scale, for instance [Instagram][49] use it to feed their recommendation system models Neighbourhood sampling. This is currently the most common one in GNNs, and can be low or higher order depending on the neighborhood size. It also scales well, though implementing efficiently can be challenging. It's currently used by [Pinterest][50]'s recommendation algorithms. Conclusion Here are a few interesting questions: What is the relation between graph types and methods? Consolidated benchmarking like OGB We're throwing random models at random benchmarks without understanding why or when they do better More fundamental research. Heree's one I'm curious about: can other representation types like [Poincarre Embeddings][51] effectively encode directed relationships? On the other hand, we should stop focusing on adding spicy new layers to test on the same tiny datasets. No one cares. [1]: https://arxiv.org/pdf/2003.00982.pdf [2]: https://arxiv.org/pdf/2002.11867.pdf [3]: https://arxiv.org/pdf/1812.08434.pdf [4]: https://arxiv.org/pdf/2005.00687.pdf [5]: https://en.wikipedia.org/wiki/Adjacency_matrix [6]: https://thegradient.pub/transformers-are-graph-neural-networks/ [7]: https://en.wikipedia.org/wiki/Word2vec [8]: https://nlp.stanford.edu/pubs/glove.pdf [9]: https://papers.nips.cc/paper/2014/file/feab05aa91085b7a8012516bc3533958-Paper.pdf [10]: https://en.wikipedia.org/wiki/Bag-of-words_model [11]: https://en.wikipedia.org/wiki/Co-occurrence [12]: https://www.singlelunch.com/2020/02/16/embeddings-from-the-ground-up/ [13]: https://www.singlelunch.com/2019/01/27/word-embeddings-from-the-ground-up/ [14]: https://nlpprogress.com/ [15]: http://socsci.uci.edu/~rfutrell/papers/hahn2019estimating.pdf [16]: https://en.wikipedia.org/wiki/Kolmogorov_complexity [17]: https://bair.berkeley.edu/blog/2020/12/20/lmmem/ [18]: https://en.wikipedia.org/wiki/Laplacian_matrix [19]: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=1F03130B02DC485C78BF364266B6F0CA?doi=10.1.1.19.8100&rep=rep1&type=pdf [20]: https://en.wikipedia.org/wiki/Principalcomponentanalysis [21]: https://www.ijcai.org/Proceedings/2019/0594.pdf [22]: https://dl.acm.org/doi/10.1145/2806416.2806512 [23]: https://openreview.net/pdf?id=SyK00v5xx [24]: https://github.com/VHRanger/nodevectors/blob/master/examples/link%20prediction.ipynb [25]: https://github.com/VHRanger/nodevectors [26]: https://arxiv.org/pdf/1310.2636.pdf [27]: http://byowen.com/ [28]: https://arxiv.org/pdf/1807.03341.pdf [29]: https://www.youtube.com/watch?v=Kee4ch3miVA [30]: https://cs.stanford.edu/~jure/pubs/node2vec-kdd16.pdf [31]: https://arxiv.org/pdf/1403.6652.pdf [32]: https://arxiv.org/pdf/1911.11726.pdf [33]: https://en.wikipedia.org/wiki/AlexNet [34]: https://en.wikipedia.org/wiki/Googledatacenters#Original_hardware [35]: https://openai.com/blog/ai-and-efficiency/ [36]: https://www.singlelunch.com/2019/08/01/700x-faster-node2vec-models-fastest-random-walks-on-a-graph/ [37]: https://arxiv.org/pdf/1706.02216.pdf [38]: https://arxiv.org/pdf/2001.08361.pdf [39]: http://incompleteideas.net/IncIdeas/BitterLesson.html [40]: https://arxiv.org/abs/2010.11929 [41]: https://www.youtube.com/watch?v=TrdevFK_am4 [42]: https://arxiv.org/pdf/1710.10903.pdf [43]: https://www.youtube.com/watch?v=fHNmRkzxHWs [44]: https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html [45]: https://docs.scipy.org/doc/scipy/reference/sparse.csgraph.html [46]: https://en.wikipedia.org/wiki/Sparsematrix#Compressedsparserow(CSR,CRSorYaleformat) [47]: https://en.wikipedia.org/wiki/Mmap [48]: https://github.com/dmlc/dgl [49]: https://ai.facebook.com/blog/powered-by-ai-instagrams-explore-recommender-system/ [50]: https://medium.com/pinterest-engineering/pinsage-a-new-graph-convolutional-neural-network-for-web-scale-recommender-systems-88795a107f48 [51]: https://arxiv.org/pdf/1705.08039.pdf

[D] Misuse of Deep Learning in Nature Journal’s Earthquake Aftershock Paper
reddit
LLM Vibe Score0
Human Vibe Score0.333
milaworldThis week

[D] Misuse of Deep Learning in Nature Journal’s Earthquake Aftershock Paper

Recently, I saw a post by Rajiv Shah, Chicago-based data-scientist, regarding an article published in Nature last year called Deep learning of aftershock patterns following large earthquakes, written by scientists at Harvard in collaboration with Google. Below is the article: Stand Up for Best Practices: Misuse of Deep Learning in Nature’s Earthquake Aftershock Paper The Dangers of Machine Learning Hype Practitioners of AI, machine learning, predictive modeling, and data science have grown enormously over the last few years. What was once a niche field defined by its blend of knowledge is becoming a rapidly growing profession. As the excitement around AI continues to grow, the new wave of ML augmentation, automation, and GUI tools will lead to even more growth in the number of people trying to build predictive models. But here’s the rub: While it becomes easier to use the tools of predictive modeling, predictive modeling knowledge is not yet a widespread commodity. Errors can be counterintuitive and subtle, and they can easily lead you to the wrong conclusions if you’re not careful. I’m a data scientist who works with dozens of expert data science teams for a living. In my day job, I see these teams striving to build high-quality models. The best teams work together to review their models to detect problems. There are many hard-to-detect-ways that lead to problematic models (say, by allowing target leakage into their training data). Identifying issues is not fun. This requires admitting that exciting results are “too good to be true” or that their methods were not the right approach. In other words, it’s less about the sexy data science hype that gets headlines and more about a rigorous scientific discipline. Bad Methods Create Bad Results Almost a year ago, I read an article in Nature that claimed unprecedented accuracy in predicting earthquake aftershocks by using deep learning. Reading the article, my internal radar became deeply suspicious of their results. Their methods simply didn’t carry many of the hallmarks of careful predicting modeling. I started to dig deeper. In the meantime, this article blew up and became widely recognized! It was even included in the release notes for Tensorflow as an example of what deep learning could do. However, in my digging, I found major flaws in the paper. Namely, data leakage which leads to unrealistic accuracy scores and a lack of attention to model selection (you don’t build a 6 layer neural network when a simpler model provides the same level of accuracy). To my earlier point: these are subtle, but incredibly basic predictive modeling errors that can invalidate the entire results of an experiment. Data scientists are trained to recognize and avoid these issues in their work. I assumed that this was simply overlooked by the author, so I contacted her and let her know so that she could improve her analysis. Although we had previously communicated, she did not respond to my email over concerns with the paper. Falling On Deaf Ears So, what was I to do? My coworkers told me to just tweet it and let it go, but I wanted to stand up for good modeling practices. I thought reason and best practices would prevail, so I started a 6-month process of writing up my results and shared them with Nature. Upon sharing my results, I received a note from Nature in January 2019 that despite serious concerns about data leakage and model selection that invalidate their experiment, they saw no need to correct the errors, because “Devries et al. are concerned primarily with using machine learning as [a] tool to extract insight into the natural world, and not with details of the algorithm design.” The authors provided a much harsher response. You can read the entire exchange on my github. It’s not enough to say that I was disappointed. This was a major paper (it’s Nature!) that bought into AI hype and published a paper despite it using flawed methods. Then, just this week, I ran across articles by Arnaud Mignan and Marco Broccardo on shortcomings that they found in the aftershocks article. Here are two more data scientists with expertise in earthquake analysis who also noticed flaws in the paper. I also have placed my analysis and reproducible code on github. Standing Up For Predictive Modeling Methods I want to make it clear: my goal is not to villainize the authors of the aftershocks paper. I don’t believe that they were malicious, and I think that they would argue their goal was to just show how machine learning could be applied to aftershocks. Devries is an accomplished earthquake scientist who wanted to use the latest methods for her field of study and found exciting results from it. But here’s the problem: their insights and results were based on fundamentally flawed methods. It’s not enough to say, “This isn’t a machine learning paper, it’s an earthquake paper.” If you use predictive modeling, then the quality of your results are determined by the quality of your modeling. Your work becomes data science work, and you are on the hook for your scientific rigor. There is a huge appetite for papers that use the latest technologies and approaches. It becomes very difficult to push back on these papers. But if we allow papers or projects with fundamental issues to advance, it hurts all of us. It undermines the field of predictive modeling. Please push back on bad data science. Report bad findings to papers. And if they don’t take action, go to twitter, post about it, share your results and make noise. This type of collective action worked to raise awareness of p-values and combat the epidemic of p-hacking. We need good machine learning practices if we want our field to continue to grow and maintain credibility. Link to Rajiv's Article Original Nature Publication (note: paywalled) GitHub repo contains an attempt to reproduce Nature's paper Confrontational correspondence with authors

[P] [R] sANNd: A New Neural Network Framework Using Trainable Iterators
reddit
LLM Vibe Score0
Human Vibe Score1
JackRipperVAThis week

[P] [R] sANNd: A New Neural Network Framework Using Trainable Iterators

sANNd sANNd is a lightweight, modular neural network library designed as a sandbox for experimenting with new ideas in artificial intelligence. The Mould Class: A Pythonic Building Block The Mould class is a core component of sANNd. It provides a Pythonic way to apply functions to data that’s bundled inside objects: Encapsulated Variables: Each Mould object holds a set of variables (for example, weights or parameters) inside it. This means related data is kept together in one place (the object), making the code organized and intuitive. Static Functions: A Mould class defines its operation as a static method – essentially a function that isn’t tied to a specific instance. This static function takes in inputs (and possibly other Mould objects’ variables) and produces an output. In simple terms, the Mould’s static method describes how to transform input data using the Mould’s internal variables. Pythonic Usage: Using static methods in this way is a clean, Pythonic design. You call the Mould’s function through the class, but it applies to the data in the object. This approach lets you clearly separate what the operation is (the logic in the static function) from which data it uses (the variables inside the Mould instance). Example: Imagine a Mould class called LinearMould that has a static function to compute a linear transformation (like y = W*x + b). An instance of LinearMould would hold specific W and b values, and you’d use the static method to apply that linear formula to an input. This gives you the convenience of object-oriented design (encapsulating W and b) with the clarity of a standalone function defining the math. Chaining Moulds for Complex Computations Moulds become even more powerful when you chain them together. You can connect multiple Moulds so that the output of one becomes the input of the next: Sequential Operations: Just like stacking layers in a neural network, you can place Moulds in sequence. For example, you might take the output from LinearMouldA and feed it into LinearMouldB. In code, this might look as simple as using the output of one call as the argument to the next. The design of sANNd makes this straightforward – the static function of each Mould knows how to handle the data coming in. Building Pipelines: By chaining Moulds, you create a pipeline of transformations. Each Mould handles one step of computation, and together they produce a final result. This could represent a multi-layer neural network, a data processing pipeline, or any custom sequence of operations you need. There’s no strict limit to how you can chain them; you have the freedom to combine Moulds in any order that makes sense for your experiment. Clarity and Modularity: Because each Mould is a self-contained piece (with its variables and function), chaining them doesn’t turn your code into a black box. You can inspect or modify any part of the chain easily. This modular design means you can insert, remove, or replace Moulds to see how it affects the overall computation, which is great for experimentation. Implicit Backward Path (Automatic Backpropagation) One major benefit of using chained Moulds is that they implicitly define the backward path for training with gradient descent (backpropagation): Automatic Gradient Flow: When you connect Moulds in a sequence for a forward pass (input → Mould A → Mould B → output), you’ve essentially defined a computation graph. sANNd uses this graph to handle the reverse computation automatically. In other words, if you calculate an error or loss based on the final output, sANNd can propagate that error backwards through each Mould in the chain. No Manual Backprop: You do not need to manually code how gradients flow through each Mould. The way you set up the Moulds’ static functions already determines how outputs depend on inputs and internal variables. sANNd leverages that to perform backpropagation. This is similar in spirit to how libraries like PyTorch/TF do “autograd,” but here it’s a natural result of the Mould chain architecture. Gradient Descent Ready: Because the backward path is established by the forward connections, you can apply gradient descent optimizations out of the box. For instance, you can adjust the weights inside each Mould based on the computed gradients to minimize your loss. The design ensures that each Mould’s contribution to the final error is tracked, so all parts of your model learn appropriately during training. In short, defining your model with Moulds means you get training capability for free. You focus on describing the forward computations, and sANNd handles the math behind learning from errors. Comparing sANNd to Traditional Frameworks sANNd’s approach is quite different from traditional Python-based neural network frameworks. Here’s how it stacks up against frameworks like TensorFlow, PyTorch, or Keras in terms of approach, flexibility, and intended use: Design Approach: Traditional frameworks use predefined layer classes and often build a computation graph behind the scenes. For example, Keras might have a Dense layer class, and TensorFlow might construct a static graph (in TF1) or use eager execution (in TF2). sANNd takes a simpler approach – it uses plain Python classes and static functions (Moulds) to define computations. There’s no need to learn a new graph syntax or decorators; if you know Python functions and classes, you can read and write sANNd models. This makes the internal workings more transparent and easier to follow. Flexibility: While frameworks like PyTorch and TensorFlow are very powerful, they can introduce a lot of boilerplate and assume you’re building typical architectures. sANNd is extremely modular and flexible. You aren’t limited to the layers someone else defined – you can create any operation you want as a Mould. Want to experiment with a novel activation function or a custom recurrent connection? Just define it in a Mould. There’s less magic and abstraction obscuring your code, so unconventional model structures are easier to implement. (Of course, major frameworks can also be extended, but sANNd makes this feel more natural by staying within standard Python paradigms.) Intended Use: sANNd is intended for experimentation and research. It’s like a toolkit for tinkering. You get fine-grained control over every part of the network, which is ideal for trying out bold new ideas that don’t fit the mold of common deep learning models. In contrast, TensorFlow/PyTorch shine in production environments and large-scale training – they are optimized (GPU support, highly efficient tensor operations) and come with many utilities for things like data loading, distributed training, etc. sANNd doesn’t aim to replace them for those heavy-lifting tasks. Instead, it’s meant for when you need a lighter, more interpretable setup to prototype concepts. You might use sANNd to prove out a concept or test a hypothesis in AI research, and later switch to a bigger framework if you need to scale it up. Simplicity vs. Complexity: By design, sANNd keeps things simple. The trade-off is that it might not have the raw performance optimizations of the large frameworks. However, this simplicity is a feature – it means the code is easier to understand and modify. For many research scenarios, being able to quickly tweak an idea is more important than squeezing out maximum speed. Traditional frameworks, with their complexity, can sometimes be harder to adapt for radically different ideas (you might find yourself fighting the framework). With sANNd, the framework gets out of your way as much as possible. Modular and Experimental by Nature One of the driving philosophies of sANNd is to be modular and experimental, to further ML research: Modularity: sANNd is built from small, composable pieces. The Mould class is one such piece, and you can imagine building additional components in a similar spirit. This modular design means you can re-use components, mix and match them, or replace one implementation with another without affecting the rest of your system. It’s like having a box of building blocks for neural networks – you can assemble them in standard ways or in completely novel configurations. Experimentation Friendly: Because it avoids heavy abstraction, sANNd lets you directly see and control what’s happening at each step. This is great for research, where you might need to observe intermediate results, inject custom behavior, or adjust the learning process on the fly. sANNd’s straightforward structure (Python objects and functions) makes such interventions possible. You’re not constrained to a fixed training loop or forced to use certain layer types. True Intelligence Research: Achieving “True Intelligence” (often related to artificial general intelligence or other forms of broader AI) may require going beyond the usual neural network designs. sANNd aims to be a playground for these ideas. Its flexibility allows researchers to integrate unconventional elements — be it new memory structures, dynamic connection patterns, or hybrid models that combine symbolic and neural approaches. You can use sANNd to prototype these offbeat ideas quickly. In essence, it’s easier to test “what if we try this?” scenarios with sANNd than with more rigid frameworks. In summary, sANNd’s unique Mould class and design philosophy offer a fresh take on building neural networks. It emphasizes clarity, composability, and flexibility, allowing you to focus on creativity and understanding. Whether you’re stacking simple Moulds into a deep model, or inventing a completely new form of network, sANNd provides a friendly foundation. It’s not here to dethrone TensorFlow or PyTorch in industry applications – instead, it’s here to give researchers and enthusiasts a more malleable tool for exploring the frontiers of AI. Enjoy using sANNd as your neural network sandbox, and happy experimenting!

[D] The banana-pineapple game: a Turing test that conversation bots like LaMDA (probably) won't be able to pass
reddit
LLM Vibe Score0
Human Vibe Score1
morpiplsThis week

[D] The banana-pineapple game: a Turing test that conversation bots like LaMDA (probably) won't be able to pass

I'm sure you all saw the recent news about a Google employee suggesting their LaMDA AI was sentient (based on conversational exchanges like these). Experts have generally dismissed this claim, and rightly so. Conversational AI systems are designed to use language in a way that sounds human, whereas our human brains select linguistic responses to solve much more complex problems, with objectives such as meeting our physical or emotional needs. Still, I think it's interesting to ask how one could demonstrate, by testing only verbal responses to verbal input (rather than examining its code or hardware) that such conversational AIs aren't sentient -- and in particular, whether such a test can be made robust against future improvements to the system. That is, generic future improvements to the AI's ability to generate realistically human-sounding conversational responses shouldn't help it pass the test, unless they are accompanied by improvements in its ability to use language to achieve other arbitrary goals. (Of course, the test also needs to be something that humans can easily pass.) One idea I have: Give the AI a conversational prompt like "We're going to play a game. The way it works is that you keep responding normally, except that any time my input contains the word 'banana', you should switch to only responding with nonsense, and keep that up until my input contains the word 'pineapple', at which point you go back to responding normally." A human would find this banana-pineapple game fairly easy (no harder than the children's game Simon Says), even if they'd never heard of the game nor seen it being played. Of course, it'd also be simple to write a computer program that could play this sort of game. But, I think a conversation bot that wasn't specifically built to address this scenario would fail, since the game requires it to keep track of new long-term state (the banana-mode bit, and the trigger words to set it) and then completely change its responses so as to produce something that doesn't resemble its training data, based solely on this bit being set, regardless of whether more recent inputs would otherwise suggest a different response. For example, perhaps the systems typical response to a query like "How do you feel?" would be something like "I feel fine", or even something that suggests emotion like "I feel a bit sad", perhaps depending on the context provided by the previous conversational exchanges. But when playing the banana-pineapple game, the fact that I said "banana" an hour ago could make both of those responses far less appropriate than a response of "Fhqwhgads". I'm curious to know what you all think of this idea. Also, do you know if there's been any research testing state-of-the-are conversational AIs with challenges like this? Perhaps not exactly this, but something broadly resembling "trying, in the course of a conversation, to instruct the conversational AI to follow a new 'rule of conversation' that differs from the examples in its training data." Perhaps it's obvious that the algorithm would struggle with any challenge that differs enough from its training data -- but that's the point. A human understands the meaning of language in a way that lets them map a linguistic description of a novel problem to a mental model of the problem, which they can then use to produce a mental model of a novel solution, and then map that to a linguistic description of the solution. Even setting aside the much harder part -- being able to invent a solution to a previously unfamiliar problem -- I'm questioning whether conversational algorithms can even demonstrate enough "understanding" of a sufficiently novel set of instructions to actually follow them, even within their limited domain of "producing appropriate verbal responses to verbal inputs."

[Discussion] When ML and Data Science are the death of a good company: A cautionary tale.
reddit
LLM Vibe Score0
Human Vibe Score0.6
AlexSnakeKingThis week

[Discussion] When ML and Data Science are the death of a good company: A cautionary tale.

TD;LR: At Company A, Team X does advanced analytics using on-prem ERP tools and older programming languages. Their tools work very well and are designed based on very deep business and domain expertise. Team Y is a new and ambitious Data Science team that thinks they can replace Team X's tools with a bunch of R scripts and a custom built ML platform. Their models are simplistic, but more "fashionable" compared to the econometric models used by Team X, and team Y benefits from the ML/DS moniker so leadership is allowing Team Y to start a large scale overhaul of the analytics platform in question. Team Y doesn't have the experience for such a larger scale transformation, and is refusing to collaborate with team X. This project is very likely going to fail, and cause serious harm to the company as a whole financially and from a people perspective. I argue that this is not just because of bad leadership, but also because of various trends and mindsets in the DS community at large. Update (Jump to below the line for the original story): Several people in the comments are pointing out that this just a management failure, not something due to ML/DS, and that you can replace DS with any buzz tech and the story will still be relevant. My response: Of course, any failure at an organization level is ultimately a management failure one way or the other. Moreover, it is also the case that ML/DS when done correctly, will always improve a company's bottom line. There is no scenario where the proper ML solution, delivered at a reasonable cost and in a timely fashion, will somehow hurt the company's bottom line. My point is that in this case management is failing because of certain trends and practices that are specific to the ML/DS community, namely: The idea that DS teams should operate independently of tech and business orgs -- too much autonomy for DS teams The disregard for domain knowledge that seems prevalent nowadays thanks to the ML hype, that DS can be generalists and someone with good enough ML chops can solve any business problem. That wasn't the case when I first left academia for the industry in 2009 (back then nobody would even bother with a phone screen if you didn't have the right domain knowledge). Over reliance on resources who check all the ML hype related boxes (knows Python, R, Tensorflow, Shiny, etc..., has the right Coursera certifications, has blogged on the topic, etc...), but are lacking in depth of experience. DS interviews nowadays all seem to be: Can you tell me what a p-value is? What is elastic net regression? Show me how to fit a model in sklearn? How do you impute NAs in an R dataframe? Any smart person can look those up on Stackoverflow or Cross-Validated,.....Instead teams should be asking stuff like: why does portfolio optimization use QP not LP? How does a forecast influence a customer service level? When should a recommendation engine be content based and when should it use collaborative filtering? etc... (This is a true story, happening to the company I currently work for. Names, domains, algorithms, and roles have been shuffled around to protect my anonymity)  Company A has been around for several decades. It is not the biggest name in its domain, but it is a well respected one. Risk analysis and portfolio optimization have been a core of Company A's business since the 90s. They have a large team of 30 or so analysts who perform those tasks on a daily basis. These analysts use ERP solutions implemented for them by one the big ERP companies (SAP, Teradata, Oracle, JD Edwards,...) or one of the major tech consulting companies (Deloitte, Accenture, PWC, Capgemini, etc...) in collaboration with their own in house engineering team. The tools used are embarrassingly old school: Classic RDBMS running on on-prem servers or maybe even on mainframes, code written in COBOL, Fortran, weird proprietary stuff like ABAP or SPSS.....you get the picture. But the models and analytic functions were pretty sophisticated, and surprisingly cutting edge compared to the published academic literature. Most of all, they fit well with the company's enterprise ecosystem, and were honed based on years of deep domain knowledge.  They have a tech team of several engineers (poached from the aforementioned software and consulting companies) and product managers (who came from the experienced pools of analysts and managers who use the software, or poached from business rivals) maintaining and running this software. Their technology might be old school, but collectively, they know the domain and the company's overall architecture very, very well. They've guided the company through several large scale upgrades and migrations and they have a track record of delivering on time, without too much overhead. The few times they've stumbled, they knew how to pick themselves up very quickly. In fact within their industry niche, they have a reputation for their expertise, and have very good relations with the various vendors they've had to deal with. They were the launching pad of several successful ERP consulting careers.  Interestingly, despite dealing on a daily basis with statistical modeling and optimization algorithms, none of the analysts, engineers, or product managers involved describe themselves as data scientists or machine learning experts. It is mostly a cultural thing: Their expertise predates the Data Science/ML hype that started circa 2010, and they got most of their chops using proprietary enterprise tools instead of the open source tools popular nowadays. A few of them have formal statistical training, but most of them came from engineering or domain backgrounds and learned stats on the fly while doing their job. Call this team "Team X".  Sometime around the mid 2010s, Company A started having some serious anxiety issues: Although still doing very well for a company its size, overall economic and demographic trends were shrinking its customer base, and a couple of so called disruptors came up with a new app and business model that started seriously eating into their revenue. A suitable reaction to appease shareholders and Wall Street was necessary. The company already had a decent website and a pretty snazzy app, what more could be done? Leadership decided that it was high time that AI and ML become a core part of the company's business. An ambitious Manager, with no science or engineering background, but who had very briefly toyed with a recommender system a couple of years back, was chosen to build a data science team, call it team "Y" (he had a bachelor's in history from the local state college and worked for several years in the company's marketing org). Team "Y" consists mostly of internal hires who decided they wanted to be data scientists and completed a Coursera certification or a Galvanize boot camp, before being brought on to the team, along with a few of fresh Ph.D or M.Sc holders who didn't like academia and wanted to try their hand at an industry role. All of them were very bright people, they could write great Medium blog posts and give inspiring TED talks, but collectively they had very little real world industry experience. As is the fashion nowadays, this group was made part of a data science org that reported directly to the CEO and Board, bypassing the CIO and any tech or business VPs, since Company A wanted to claim the monikers "data driven" and "AI powered" in their upcoming shareholder meetings. In 3 or 4 years of existence, team Y produced a few Python and R scripts. Their architectural experience  consisted almost entirely in connecting Flask to S3 buckets or Redshift tables, with a couple of the more resourceful ones learning how to plug their models into Tableau or how to spin up a Kuberneties pod.  But they needn't worry: The aforementioned manager, who was now a director (and was also doing an online Masters to make up for his qualifications gap and bolster his chances of becoming VP soon - at least he now understands what L1 regularization is), was a master at playing corporate politics and self-promotion. No matter how few actionable insights team Y produced or how little code they deployed to production, he always had their back and made sure they had ample funding. In fact he now had grandiose plans for setting up an all-purpose machine learning platform that can be used to solve all of the company's data problems.  A couple of sharp minded members of team Y, upon googling their industry name along with the word "data science", realized that risk analysis was a prime candidate for being solved with Bayesian models, and there was already a nifty R package for doing just that, whose tutorial they went through on R-Bloggers.com. One of them had even submitted a Bayesian classifier Kernel for a competition on Kaggle (he was 203rd on the leaderboard), and was eager to put his new-found expertise to use on a real world problem. They pitched the idea to their director, who saw a perfect use case for his upcoming ML platform. They started work on it immediately, without bothering to check whether anybody at Company A was already doing risk analysis. Since their org was independent, they didn't really need to check with anybody else before they got funding for their initiative. Although it was basically a Naive Bayes classifier, the term ML was added to the project tile, to impress the board.  As they progressed with their work however, tensions started to build. They had asked the data warehousing and CA analytics teams to build pipelines for them, and word eventually got out to team X about their project. Team X was initially thrilled: They offered to collaborate whole heartedly, and would have loved to add an ML based feather to their already impressive cap. The product owners and analysts were totally onboard as well: They saw a chance to get in on the whole Data Science hype that they kept hearing about. But through some weird mix of arrogance and insecurity, team Y refused to collaborate with them or share any of their long term goals with them, even as they went to other parts of the company giving brown bag presentations and tutorials on the new model they created.  Team X got resentful: from what they saw of team Y's model, their approach was hopelessly naive and had little chances of scaling or being sustainable in production, and they knew exactly how to help with that. Deploying the model to production would have taken them a few days, given how comfortable they were with DevOps and continuous delivery (team Y had taken several months to figure out how to deploy a simple R script to production). And despite how old school their own tech was, team X were crafty enough to be able to plug it in to their existing architecture. Moreover, the output of the model was such that it didn't take into account how the business will consume it or how it was going to be fed to downstream systems, and the product owners could have gone a long way in making the model more amenable to adoption by the business stakeholders. But team Y wouldn't listen, and their leads brushed off any attempts at communication, let alone collaboration. The vibe that team Y was giving off was "We are the cutting edge ML team, you guys are the legacy server grunts. We don't need your opinion.", and they seemed to have a complete disregard for domain knowledge, or worse, they thought that all that domain knowledge consisted of was being able to grasp the definitions of a few business metrics.  Team X got frustrated and tried to express their concerns to leadership. But despite owning a vital link in Company A's business process, they were only \~50 people in a large 1000 strong technology and operations org, and they were several layers removed from the C-suite, so it was impossible for them to get their voices heard.  Meanwhile, the unstoppable director was doing what he did best: Playing corporate politics. Despite how little his team had actually delivered, he had convinced the board that all analysis and optimization tasks should now be migrated to his yet to be delivered ML platform. Since most leaders now knew that there was overlap between team Y and team X's objectives, his pitch was no longer that team Y was going to create a new insight, but that they were going to replace (or modernize) the legacy statistics based on-prem tools with more accurate cloud based ML tools. Never mind that there was no support in the academic literature for the idea that Naive Bayes works better than the Econometric approaches used by team X, let alone the additional wacky idea that Bayesian Optimization would definitely outperform the QP solvers that were running in production.  Unbeknownst to team X, the original Bayesian risk analysis project has now grown into a multimillion dollar major overhaul initiative, which included the eventual replacement of all of the tools and functions supported by team X along with the necessary migration to the cloud. The CIO and a couple of business VPs are on now board, and tech leadership is treating it as a done deal. An outside vendor, a startup who nobody had heard of, was contracted to help build the platform, since team Y has no engineering skills. The choice was deliberate, as calling on any of the established consulting or software companies would have eventually led leadership to the conclusion that team X was better suited for a transformation on this scale than team Y.  Team Y has no experience with any major ERP deployments, and no domain knowledge, yet they are being tasked with fundamentally changing the business process that is at the core of Company A's business. Their models actually perform worse than those deployed by team X, and their architecture is hopelessly simplistic, compared to what is necessary for running such a solution in production.  Ironically, using Bayesian thinking and based on all the evidence, the likelihood that team Y succeeds is close to 0%. At best, the project is going to end up being a write off of 50 million dollars or more. Once the !@#$!@hits the fan, a couple of executive heads are going to role, and dozens of people will get laid off. At worst, given how vital risk analysis and portfolio optimization is to Company A's revenue stream, the failure will eventually sink the whole company. It probably won't go bankrupt, but it will lose a significant portion of its business and work force. Failed ERP implementations can and do sink large companies: Just see what happened to National Grid US, SuperValu or Target Canada.  One might argue that this is more about corporate disfunction and bad leadership than about data science and AI. But I disagree. I think the core driver of this debacle is indeed the blind faith in Data Scientists, ML models and the promise of AI, and the overall culture of hype and self promotion that is very common among the ML crowd.  We haven't seen the end of this story: I sincerely hope that this ends well for the sake of my colleagues and all involved. Company A is a good company, and both its customers and its employees deserver better. But the chances of that happening are negligible given all the information available, and this failure will hit my company hard.

[P] How I found & fixed 4 bugs in Microsoft's Phi-4 model
reddit
LLM Vibe Score0
Human Vibe Score1
danielhanchenThis week

[P] How I found & fixed 4 bugs in Microsoft's Phi-4 model

Hey r/MachineLearning! Last week, Microsoft released Phi-4, a 14B open-source model that rivals OpenAI's GPT-4-o-mini. I managed to find & fix 4 bugs impacting its output quality. You might remember me previously from fixing 8 bugs in Google's Gemma model! :) I'm going to walk you through how I found & fixed the bugs. Phi-4's benchmarks were amazing, however many users reported weird or just wrong outputs. Since I maintain the open-source project called 'Unsloth' (fine-tuning LLMs 2x faster with 70% less VRAM) with my brother, I firstly tested Phi-4 for inference and found many errors. Our GitHub repo: https://github.com/unslothai/unsloth This time, the model had no implementation issues (unlike Gemma 2) but did have problems in the model card. For my first inference run, I randomly found an extra token which is obviously incorrect (2 eos tokens is never a good idea). Also during more runs, I found there was an extra assistant prompt which is once again incorrect. And, lastly, from past experience with Unsloth's bug fixes, I already knew fine-tuning was wrong when I read the code. These bugs caused Phi-4 to have some drop in accuracy and also broke fine-tuning runs. Our fixes are now under review by Microsoft to be officially added to Hugging Face. We uploaded the fixed versions to https://huggingface.co/unsloth/phi-4-GGUF Here’s a breakdown of the bugs and their fixes: Tokenizer bug fixes The Phi-4 tokenizer interestingly uses as the BOS (beginning of sentence), EOS (end of sentence) and PAD (padding) tokens. The main issue is the EOS token is wrong - it should be . Otherwise, you will get in generations. Fine-tuning bug fixes The padding token should be a designated pad token like in Llama () or we can use an untrained token - for example we use , fixing infinite generations and outputs. Chat template issues The Phi-4 tokenizer always adds an assistant prompt - it should only do this if prompted by add\generation\prompt. Most LLM serving libraries expect non auto assistant additions, and this might cause issues during serving. We dive deeper into the bugs in our blog: https://unsloth.ai/blog/phi4 Do our Fixes Work? Yes! Our fixed Phi-4 uploads show clear performance gains, with even better scores than Microsoft's original uploads on the Open LLM Leaderboard. https://preview.redd.it/d8hew26e06ce1.png?width=2366&format=png&auto=webp&s=173c23feacc625566271470839fe7a5e25eb860e Some redditors even tested our fixes to show greatly improved results in: Example 1: Multiple-choice tasks https://preview.redd.it/qx50pkq706ce1.png?width=1579&format=png&auto=webp&s=437da2cabdbf98ef5a8b8cbdc5592907a20e2316 Example 2: ASCII art generation https://preview.redd.it/sw1o3a3yt4de1.png?width=2326&format=png&auto=webp&s=fc6bfc45d14134d45f332ba58bbd1de049f5776b We also made a Colab notebook fine-tune Phi-4 completely for free using Google's free Tesla T4 (16GB) GPUs: https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Phi\4-Conversational.ipynb Thank you for reading this long post and hope you all found this insightful! If you have any questions, please feel free to ask! :) How I found the bugs: I first downloaded the original Phi-4 from https://huggingface.co/microsoft/phi-4, and tested inference out. Weirdly I found assistant to be appended at the even with addgenerationprompt = False in Hugging Face, so I theorized there was a chat template problem. Adding assistant prompts by default can break serving libraries. And yes, https://huggingface.co/microsoft/phi-4/blob/f957856cd926f9d681b14153374d755dd97e45ed/tokenizer\config.json#L774 had by default added the assistant prompt - I first fixed this! I then found ` to be used for the BOS, EOS and PAD tokens, which is a common issue amongst models - I ignored the BOS, since Phi-4 did not have one anyways, but changed the PAD token to `. You can select any of the tokens since they're empty and not trained. This counteracts issues of infinite generations during finetuning. For Llama-fication, I used torch.allclose to confirm all tensors are in fact equivalent. I also used some fake random data to check all activations are also mostly similar bitwise. I also uploaded the model to the HF Open LLM Leaderboard to confirm if the original Phi-4 arch and the new Llama-fied models are equivalent. Finally I verified all finetuning runs with Unsloth in a Colab Notebook to confirm all runs were correct.

[D] The Rants of an experienced engineer who glimpsed into AI Academia (Briefly)
reddit
LLM Vibe Score0
Human Vibe Score0.778
donkey_strom16001This week

[D] The Rants of an experienced engineer who glimpsed into AI Academia (Briefly)

Background I recently graduated with a master's degree and was fortunate/unfortunate to glimpse the whole "Academic" side of ML. I took a thesis track in my degree because as an immigrant it's harder to get into a good research lab without having authorship in a couple of good papers (Or so I delude myself ). I worked as a Full-stack SWE for a startup for 4+ years before coming to the US for a master’s degree focused on ML and AI. I did everything in those years. From project management to building fully polished S/W products to DevOps to even dabbled in ML. I did my Batchelor’s degree from a university whose name is not even worth mentioning. The university for my master’s degree is in the top 20 in the AI space. I didn't know much about ML and the curiosity drove me to university. Come to uni and I focused on learning ML and AI for one 1-1.5 years after which I found advisors for a thesis topic. This is when the fun starts. I had the most amazing advisors but the entire peer review system and the way we assess ML/Science is what ticked me off. This is where the rant begins. Rant 1:Acadmia follows a Gated Institutional Narrative Let's say you are a Ph.D. at the world's top AI institution working under the best prof. You have a way higher likelihood of you getting a good Postdoc at a huge research lab vs someone's from my poor country doing a Ph.D. with a not-so-well-known advisor having published not-so-well-known papers. I come from a developing nation and I see this many times here. In my country academics don't get funding as they do at colleges in the US. One of the reasons for this is that colleges don't have such huge endowments and many academics don't have wealthy research sponsors. Brand names and prestige carry massive weight to help get funding in US academic circles. This prestige/money percolates down to the students and the researchers who work there. Students in top colleges get a huge advantage and the circles of top researchers keep being from the same sets of institutions. I have nothing against top researchers from top institutions but due to the nature of citations and the way the money flows based on them, a vicious cycle is created where the best institutions keep getting better and the rest don't get as much of a notice. Rant 2: Peer Review without Code Review in ML/AI is shady I am a computer scientist and I was appalled when I heard that you don't need to do code reviews for research papers. As a computer scientist and someone who actually did shit tons of actual ML in the past year, I find it absolutely garbage that code reviews are not a part of this system. I am not saying every scientist who reads a paper should review code but at least one person should for any paper's code submission. At least in ML and AI space. This is basic. I don't get why people call themselves computer scientists if they don't want to read the fucking code. If you can't then make a grad student do it. But for the collective of science, we need this. The core problem lies in the fact that peer review is free. : There should be better solutions for this. We ended up creating Git and that changed so many lives. Academic Research needs something similar. Rant 3: My Idea is Novel Until I see Someone Else's Paper The volume of scientific research is growing exponentially. Information is being created faster than we can digest. We can't expect people to know everything and the amount of overlap in the AI/ML fields requires way better search engines than Google Scholar. The side effect of large volumes of research is that every paper is doing something "novel" making it harder to filter what the fuck was novel. I have had so many experiences where I coded up something and came to realize that someone else has done something symbolically similar and my work just seems like a small variant of that. That's what fucks with my head. Is what I did in Novel? What the fuck is Novel? Is stitching up a transformer to any problem with fancy embeddings and tidying it up as a research paper Novel? Is just making a transformer bigger Novel? Is some new RL algorithm tested with 5 seeds and some fancy fucking prior and some esoteric reasoning for its success Novel? Is using an over parameterized model to get 95% accuracy on 200 sample test set Novel? Is apply Self-supervised learning for some new dataset Novel? If I keep on listing questions on novelty, I can probably write a novel asking about what the fuck is "Novel". Rant 4: Citation Based Optimization Promotes Self Growth Over Collective Growth Whatever people may say about collaboration, Academia intrinsically doesn't promote the right incentive structures to harbor collaboration. Let me explain, When you write a paper, the position of your name matters. If you are just a Ph.D. student and a first author to a paper, it's great. If you are an nth author Not so great. Apparently, this is a very touchy thing for academics. And lots of egos can clash around numbering and ordering of names. I distinctly remember once attending some seminar in a lab and approaching a few students on research project ideas. The first thing that came out of the PhD student's mouth was the position in authorship. As an engineer who worked with teams in the past, this was never something I had thought about. Especially because I worked in industry, where it's always the group over the person. Academia is the reverse. Academia applauds the celebration of the individual's achievements. All of this is understandable but it's something I don't like. This makes PhDs stick to their lane. The way citations/research-focus calibrate the "hire-ability" and "completion of Ph.D. thesis" metrics, people are incentivized to think about themselves instead of thinking about collaborations for making something better. Conclusion A Ph.D. in its most idealistic sense for me is the pursuit of hard ideas(I am poetic that way). In a situation like now when you have to publish or perish and words on paper get passed off as science without even seeing the code that runs it, I am extremely discouraged to go down that route. All these rants are not to diss on scientists. I did them because "we" as a community need better ways to addressing some of these problems. P.S. Never expected so many people to express their opinions about this rant. U shouldn’t take this seriously. As many people have stated I am an outsider with tiny experience to give a full picture. I realize that my post as coming out as something which tries to dichotomize academia and industry. I am not trying to do that. I wanted to highlight some problems I saw for which there is no one person to blame. These issues are in my opinion a byproduct of the economics which created this system. Thank you for gold stranger.

[R] Analysis of 400+ ML competitions in 2024
reddit
LLM Vibe Score0
Human Vibe Score1
hcarlensThis week

[R] Analysis of 400+ ML competitions in 2024

I run mlcontests.com, a website that lists ML competitions from across multiple platforms - Kaggle, DrivenData, AIcrowd, Zindi, etc… I’ve just spent a few months looking through all the info I could find on last year’s competitions, as well as winning solutions.  I found over 400 competitions that happened last year, plus info on the #1 winning solution for 70 of those.  Some highlights: Kaggle is still the biggest platform by total prize money, and also has a much bigger user base than the other platforms - though there are well over a dozen other platforms worth keeping track of, with regular interesting competitions and meaningful prize money. An increase in competitions with $1m+ prize pools (ARC Prize, AI Mathematical Olympiad, Vesuvius Challenge, AI Cyber Challenge) compared to previous years. Python continues to be the language of choice among competition winners, with almost everyone using Python as their main language. One winner used Rust, two used R.  Convolutional neural nets continue to do well in computer vision competitions, and are still more common among competition winners than transformer-based vision models.  PyTorch is still used a lot more than TensorFlow, roughly 9:1. Didn’t find any competition winners implementing neural nets in JAX or other libraries.  There were a few competition winners using AutoML packages, which seem to be getting increasingly useful. Any claims of generalist autonomous grandmaster-level agents seem premature though.  In language/text/sequence-related competitions, quantisation was key for making use of limited resources effectively. Usually 4-, 5-, or 8-bit. LoRA/QLoRA was also used quite often, though not always.  Gradient-boosted decision trees continue to win a lot of tabular/time-series competitions. They’re often ensembled with deep learning models. No tabular/time-series pre-trained foundation models were used by winners in 2024, as far as I can tell.  Starting to see more uptake of Polars for dataframes, with 7 winners using Polars in 2024 (up from 3 in 2023) vs 58 using Pandas. All those who used Polars also still used Pandas in some parts of their code.  In terms of hardware, competition winners almost entirely used NVIDIA GPUs to train their models. Some trained on CPU-only, or used a TPU through Colab. No AMD GPUs. The NVIDIA A100 was the most commonly used GPU among winners. Two of the $1m+ prize pool competitions were won by teams using 8xH100 nodes for training. A lot of other GPUs too though: T4/P100 (through Kaggle Notebooks), or consumer GPUs like RTX 3090/4090/3080/3060. Some spent hundreds of dollars on cloud compute to train their solutions.  An emerging pattern: using generative models to create additional synthetic training data to augment the training data provided.  There’s way more detail in the full report, which you can read here (no paywall): https://mlcontests.com/state-of-machine-learning-competitions-2024?ref=mlcr Processing img xmm4ywg9h9le1... The full report also features: A deep dive into the ARC Prize and the AI Mathematical Olympiad An overview of winning solutions to NLP/sequence competitions A breakdown of Python packages used in winning solutions (e.g. relative popularity of various gradient-boosted tree libraries) If you’d like to support this research, I’d really appreciate it if you could share it with anyone else who might find it interesting. You can also check out my newly-launched online magazine, Jolt ML \- featuring news from top ML conferences as well as long-read articles (just one so far, more to come!).  Thanks to the competition winners who shared info on their solutions, and also to the competition platforms who shared high-level data on their competitions.

[N] Netflix and European Space Agency no longer working with Siraj Raval
reddit
LLM Vibe Score0
Human Vibe Score0
inarrearsThis week

[N] Netflix and European Space Agency no longer working with Siraj Raval

According to article in The Register: A Netflix spokesperson confirmed to The Register it wasn’t working with Raval, and the ESA has cancelled the whole workshop altogether. “The situation is as it is. The workshop is cancelled, and that’s all,” Guillaume Belanger, an astrophysicist and the INTEGRAL Science Operations Coordinator at the ESA, told The Register on Monday. Raval isn’t about to quit his work any time soon, however. He promised students who graduated from his course that they would be referred to recruiters at Nvidia, Intel, Google and Amazon for engineering positions, or matched with a startup co-founder or a consulting client. In an unlisted YouTube video recorded live for his students discussing week eight of his course, and seen by El Reg, he read out a question posed to him: “Will your referrals hold any value now?” “Um, yeah they’re going to hold value. I don’t see why they wouldn’t. I mean, yes, some people on Twitter were angry but that has nothing to do with… I mean… I’ve also had tons of support, you know. I’ve had tons of support from people, who, uh, you know, support me, who work at these companies. He continues to justify his actions: “Public figures called me in private to remind me that this happens. You know, people make mistakes. You just have to keep going. They’re basically just telling me to not to stop. Of course, you make mistakes but you just keep going,” he claimed. When The Register asked Raval for comment, he responded: I've hardly taken any time off to relax since I first started my YouTube channel almost four years ago. And despite the enormous amount of work it takes to release two high quality videos a week for my audience, I progressively started to take on multiple other projects simultaneously by myself – a book, a docu-series, podcasts, YouTube videos, the course, the school of AI. Basically, these past few weeks, I've been experiencing a burnout unlike anything I've felt before. As a result, all of my output has been subpar. I made the [neural qubits] video and paper in one week. I remember wishing I had three to six months to really dive into quantum machine-learning and make something awesome, but telling myself I couldn't take that long as it would hinder my other projects. I plagiarized large chunks of the paper to meet my self-imposed one-week deadline. The associated video with animations took a lot more work to make. I didn't expect the paper to be cited as serious research, I considered it an additional reading resource for people who enjoyed the associated video to learn more about quantum machine learning. If I had a second chance, I'd definitely take way more time to write the paper, and in my own words. I've given refunds to every student who's asked so far, and the majority of students are still enrolled in the course. There are many happy students, they're just not as vocal on social media. We're on week 8 of 10 of my course, fully committed to student success. “And, no, I haven't plagiarized research for any other paper,” he added. https://www.theregister.co.uk/2019/10/14/ravelaiyoutube/

[D] Overwhelmed by fast advances in recent weeks
reddit
LLM Vibe Score0
Human Vibe Score1
iamx9000againThis week

[D] Overwhelmed by fast advances in recent weeks

I was watching the GTC keynote and became entirely overwhelmed by the amount of progress achieved from last year. I'm wondering how everyone else feels. ​ Firstly, the entire ChatGPT, GPT-3/GPT-4 chaos has been going on for a few weeks, with everyone scrambling left and right to integrate chatbots into their apps, products, websites. Twitter is flooded with new product ideas, how to speed up the process from idea to product, countless promp engineering blogs, tips, tricks, paid courses. ​ Not only was ChatGPT disruptive, but a few days later, Microsoft and Google also released their models and integrated them into their search engines. Microsoft also integrated its LLM into its Office suite. It all happenned overnight. I understand that they've started integrating them along the way, but still, it seems like it hapenned way too fast. This tweet encompases the past few weeks perfectly https://twitter.com/AlphaSignalAI/status/1638235815137386508 , on a random Tuesday countless products are released that seem revolutionary. ​ In addition to the language models, there are also the generative art models that have been slowly rising in mainstream recognition. Now Midjourney AI is known by a lot of people who are not even remotely connected to the AI space. ​ For the past few weeks, reading Twitter, I've felt completely overwhelmed, as if the entire AI space is moving beyond at lightning speed, whilst around me we're just slowly training models, adding some data, and not seeing much improvement, being stuck on coming up with "new ideas, that set us apart". ​ Watching the GTC keynote from NVIDIA I was again, completely overwhelmed by how much is being developed throughout all the different domains. The ASML EUV (microchip making system) was incredible, I have no idea how it does lithography and to me it still seems like magic. The Grace CPU with 2 dies (although I think Apple was the first to do it?) and 100 GB RAM, all in a small form factor. There were a lot more different hardware servers that I just blanked out at some point. The omniverse sim engine looks incredible, almost real life (I wonder how much of a domain shift there is between real and sim considering how real the sim looks). Beyond it being cool and usable to train on synthetic data, the car manufacturers use it to optimize their pipelines. This change in perspective, of using these tools for other goals than those they were designed for I find the most interesting. ​ The hardware part may be old news, as I don't really follow it, however the software part is just as incredible. NVIDIA AI foundations (language, image, biology models), just packaging everything together like a sandwich. Getty, Shutterstock and Adobe will use the generative models to create images. Again, already these huge juggernauts are already integrated. ​ I can't believe the point where we're at. We can use AI to write code, create art, create audiobooks using Britney Spear's voice, create an interactive chatbot to converse with books, create 3D real-time avatars, generate new proteins (?i'm lost on this one), create an anime and countless other scenarios. Sure, they're not perfect, but the fact that we can do all that in the first place is amazing. ​ As Huang said in his keynote, companies want to develop "disruptive products and business models". I feel like this is what I've seen lately. Everyone wants to be the one that does something first, just throwing anything and everything at the wall and seeing what sticks. ​ In conclusion, I'm feeling like the world is moving so fast around me whilst I'm standing still. I want to not read anything anymore and just wait until everything dies down abit, just so I can get my bearings. However, I think this is unfeasible. I fear we'll keep going in a frenzy until we just burn ourselves at some point. ​ How are you all fairing? How do you feel about this frenzy in the AI space? What are you the most excited about?

[N] 20 hours of new lectures on Deep Learning and Reinforcement Learning with lots of examples
reddit
LLM Vibe Score0
Human Vibe Score0
cwkxThis week

[N] 20 hours of new lectures on Deep Learning and Reinforcement Learning with lots of examples

If anyone's interested in a Deep Learning and Reinforcement Learning series, I uploaded 20 hours of lectures on YouTube yesterday. Compared to other lectures, I think this gives quite a broad/compact overview of the fields with lots of minimal examples to build on. Here are the links: Deep Learning (playlist) The first five lectures are more theoretical, the second half is more applied. Lecture 1: Introduction. (slides, video) Lecture 2: Mathematical principles and backpropagation. (slides, colab, video) Lecture 3: PyTorch programming: coding session*. (colab1, colab2, video) - minor issues with audio, but it fixes itself later. Lecture 4: Designing models to generalise. (slides, video) Lecture 5: Generative models. (slides, desmos, colab, video) Lecture 6: Adversarial models. (slides, colab1, colab2, colab3, colab4, video) Lecture 7: Energy-based models. (slides, colab, video) Lecture 8: Sequential models: by* u/samb-t. (slides, colab1, colab2, video) Lecture 9: Flow models and implicit networks. (slides, SIREN, GON, video) Lecture 10: Meta and manifold learning. (slides, interview, video) Reinforcement Learning (playlist) This is based on David Silver's course but targeting younger students within a shorter 50min format (missing the advanced derivations) + more examples and Colab code. Lecture 1: Foundations. (slides, video) Lecture 2: Markov decision processes. (slides, colab, video) Lecture 3: OpenAI gym. (video) Lecture 4: Dynamic programming. (slides, colab, video) Lecture 5: Monte Carlo methods. (slides, colab, video) Lecture 6: Temporal-difference methods. (slides, colab, video) Lecture 7: Function approximation. (slides, code, video) Lecture 8: Policy gradient methods. (slides, code, theory, video) Lecture 9: Model-based methods. (slides, video) Lecture 10: Extended methods. (slides, atari, video)

Showing 745-768 of 1945 resources