[HN Gopher] Ask HN: ML Papers to Implement
       ___________________________________________________________________
        
       Ask HN: ML Papers to Implement
        
       What ML papers do you think someone who has a some experience - but
       would still consider themselves relatively inexperienced in ML,
       could implement?  ideally, a list of papers that could take 2-5
       hours each and a few hundred lines of code?
        
       Author : Heidaradar
       Score  : 78 points
       Date   : 2023-01-24 13:37 UTC (9 hours ago)
        
       | badpun wrote:
       | 2-5 hours for a few hundred lines of tricky math code sounds like
       | way too little. Not to mention, having to read and understand the
       | paper first. Depending on the difficulty of the paper and your
       | level of skill in the field, I'd say implementing a paper should
       | take 20-200 hours.
        
         | Heidaradar wrote:
         | Oh interesting, didn't know it'd take so long lol Any
         | recommendations for papers you've implemented before?
        
           | badpun wrote:
           | Sorry, I mostly work on (hobbyist) 3d computer vision and not
           | ML.
           | 
           | BTW time of implementation also greatly depends on what
           | you've implemented already. Most papers are a small
           | derivation of some preexisting idea, so I've you've already
           | implemented that idea, there isn't that much work to do on
           | top of it - just modify your existing code. But, if you're
           | just starting with some area, getting up to that point will
           | take time.
        
       | m-watson wrote:
       | This is not exactly what you are looking for but you should
       | browse Papers with Code:
       | 
       | https://paperswithcode.com/
        
       | Buttons840 wrote:
       | Soft Actor Critic, a reinforcement learning algorithm.
        
         | Heidaradar wrote:
         | thanks!
        
       | osaariki wrote:
       | I'd love for someone to do a good quality PyTorch enabled
       | implementation of Sampled AlphaZero/MuZero [1]. RLLib has an
       | AlphaZero, but it doesn't have the parallelized MCTS you really
       | want to have and the "Sampled" part is another twist to it. It
       | does implement a single player variant though, which I needed.
       | This would be amazing for applying MCTS based RL to various hard
       | combinatorial optimization problems. Case in point, AlphaTensor
       | uses their internal implementation of Sampled AlphaZero.
       | 
       | An initial implementation might be doable in 5 hours for someone
       | competent and familiar with RLLib's APIs, but could take much
       | longer to really polish.
       | 
       | [1]: https://arxiv.org/abs/2104.06303
        
         | Heidaradar wrote:
         | I'll definitely take a look!
        
       | ausbah wrote:
       | you could maybe write the whole thing in a few hours, but
       | debugging what you wrote to recreate prior results will probably
       | take much longer depending on choice of problem
        
         | Heidaradar wrote:
         | what paper is this referring to, sorry?
        
           | ausbah wrote:
           | sorry should've been more specific, but ML is general. from
           | what i've seen it's not hard to reimplement the pseudo-code
           | in any ML paper. it's just that it gets tricky when you
           | actually try to utilize the code you've written, usually in
           | trying to recreate performance results in the implementing
           | paper. it's very common for authors to leave out / downplay
           | the role of tricks or implementation details that greatly
           | contributed to the performance of the model, in addition to
           | just how finicky machine learning is in general
        
             | Heidaradar wrote:
             | i see, that makes sense. thanks for the info.
        
       | biotechbio wrote:
       | Just finished assignment 2 of cs224n[1], which has you derive
       | gradients and implement word2vec. I thought it was a pretty good
       | exercise. You could read the glove paper and try implementing
       | that as well.
       | 
       | Knowing how to step through backpropagation in a neural network
       | gets you pretty far in conceptual understanding of a lot of
       | architectures. Imo there's no substitute for writing out the
       | gradients by hand to make sure you get what's going on, if only
       | in a toy example.
       | 
       | [1] https://web.stanford.edu/class/cs224n/
        
       | phonebucket wrote:
       | A lot depends on what you're interested in.
       | 
       | Some papers that are runnable on a laptop CPU (so long as you
       | stick to small image sizes/tasks):
       | 
       | 1) Generative Adversarial Networks
       | (https://arxiv.org/abs/1406.2661). Good practice to have a custom
       | training loops, different optimisers and networks etc.
       | 
       | 2) Neural Style Transfer (https://arxiv.org/abs/1508.06576). Nice
       | to be able to manipulate pretrained networks and intercept
       | intermediate layers.
       | 
       | 3) Deep Image Prior (https://arxiv.org/abs/1711.10925). Nice low-
       | data exercise in building out an autoencoder.
       | 
       | 4) Physics Informed Neural Networks
       | (https://arxiv.org/abs/1711.10561). If you're interested
       | scientific applications, this might be fun. It's good exercise in
       | calculating higher order derivatives of neural networks and using
       | these in loss functions.
       | 
       | 5) Vanilla Policy Gradient (https://arxiv.org/abs/1604.06778) is
       | the easiest reinforcement learning algorithm to implement and can
       | be used as a black-box optimiser in a lot of settings.
       | 
       | 6) Deep Q Learning (https://arxiv.org/abs/1312.5602) is also not
       | too hard to implement and was the first time I had heard about
       | DeepMind, as well as being a foundational deep reinforcement
       | learning paper .
       | 
       | Open AI gym (https://github.com/openai/gym) would help get
       | started with the latter two.
        
         | Heidaradar wrote:
         | this is exactly what I needed, thanks!
        
       | Mxbonn wrote:
       | Not sure if it's beginner friendly but I found implementing NeRF
       | from scratch a good exercise. Especially since it reveals many
       | details that are not immediately obvious from the paper.
        
         | kkaranth wrote:
         | I've been working on implementing this too! It's been fun
         | trying to debug problems by figuring out how to reduce it to
         | the "bare minimum" to repro. Ex: does it work if I disable
         | positional encoding? Does it work if I have only one sample per
         | ray on a single image dataset? Etc
        
         | jahewson wrote:
         | Sounds neat. Tell me more.
        
       | imranq wrote:
       | Highly recommend this resource for RL
       | 
       | https://spinningup.openai.com/en/latest/
        
         | Heidaradar wrote:
         | great, thanks!
        
       | KhoomeiK wrote:
       | Hey, feel free to reach out if you'd like to join an NLP project
       | to gain more experience that I'm working on. Will provide
       | mentorship and potentially coauthorship on the publication.
        
         | Heidaradar wrote:
         | yeah, i'd love to! how do you want me to message you?
        
         | freetheelephant wrote:
         | Hey, I'd love to potentially join and help out on this project
         | and learn more about NLP.
        
       | tdekken wrote:
       | Great question!
       | 
       | I seem to be in a similar situation as an experienced software
       | engineer who has jumped into the deep end of ML. It seems most
       | resources either abstract away too much detail or too little. For
       | example, building a toy example that just calls gensim.word2vec
       | doesn't help me transfer that knowledge to other use cases. Yet
       | on the other extreme, most research papers are impenetrable walls
       | of math that obscure the forest for the trees.
       | 
       | Thus far, I would also recommend Andrej Karpathy's Zero to Hero
       | course (https://karpathy.ai/zero-to-hero.html). He assumes a high
       | level of programming knowledge but demystifies the ML side.
       | 
       | --
       | 
       | P.S. If anyone is, by chance, interested in helping chip away at
       | the literacy crisis (e.g., 40% of US 4th graders can't read even
       | at a basic level), I would love to find a collaborator for
       | evaluating the practical application of results from the ML
       | fields of cognitive modeling and machine teaching. These
       | seemingly simple ML models offer powerful insight into the neural
       | basis for learning but are explained in the most obtuse ways.
        
         | Heidaradar wrote:
         | great, thanks!
         | 
         | also for your PS, can you give a little more detail? What's
         | your end result, what have you done so far etc
        
           | tdekken wrote:
           | > what have you done so far
           | 
           | So far, I am a week into learning ML :). I have spent ~30
           | hours watching various ML courses and am in the process of
           | testing the hypothesis that teaching reading with a shallower
           | orthography (e.g., differentiating between the short and long
           | 'e' sounds by introducing an 'e' grapheme) leads to improved
           | recognition of sublexical patterns. The step I am working on
           | is building an embedding layer to ensure that these new
           | graphemes (i.e., 'e', 'a', etc.) are near their parent
           | grapheme (i.e., 'e', 'a') in the embedding space. (Although
           | the model seems straightforward, I could also be completely
           | misguided in how I am tackling this problem :) ).
           | 
           | FYI, this orthographic approach (i.e., how words are spelled
           | using an alphabet) is used in a few highly researched
           | literacy programs, but AFAICT there isn't direct research on
           | the approach itself. The motivation is to initially make
           | English a consistent language (i.e., the letters you see have
           | a one-to-one correspondence with a particular sound). This
           | should greatly simplify the initial roadblock in learning to
           | read English (as seen by studies of countries with "shallow"
           | orthographic languages) and then learners would transfer this
           | knowledge to the normal (inconsistent) English orthography.
        
             | Heidaradar wrote:
             | damn, this all sounds like very interesting, cool stuff!!
             | I'm not sure if I'd be able to help much/have the time for
             | it though, but best of luck!
        
           | tdekken wrote:
           | I would love to!
           | 
           | My main goal is to use cognitive modeling to evaluate the
           | efficacy of interventions and inform the personalized
           | "minimum effective dose" for a particular learner.
           | Academically, this is well-trodden territory [0-2] but these
           | results haven't found there way into practice. This is
           | critically important because we know that ~30% of children
           | will learn to read regardless of method, ~50% require
           | explicit, systematic instruction, ~15% require prolonged
           | explicit and systematic instruction, and up to 6% have severe
           | cognitive impairments that make acquiring reading skills
           | extremely difficult [3]. Yet, how much is enough?
           | 
           | To make this more concrete, imagine you are learning a
           | foreign language with Duolingo. How much effort per day is
           | necessary to achieve that? Many people have long streaks and
           | are no closer to fluency (I learned nearly nothing despite a
           | 400 day streak). Similarly, many reading interventions are
           | once-a-week and, predictably, don't meaningfully affect the
           | learning outcomes for those students.
           | 
           | BTW, this ML portion is part of a much larger effort (e.g.,
           | our team is a Phase II finalist in the Learning Engineering
           | Tools Competition). If anyone is interested in collaborating,
           | please feel free to reach out to me.
           | 
           | [0] Phonology, reading acquisition, and dyslexia: insights
           | from connectionist models
           | (https://pubmed.ncbi.nlm.nih.gov/10467896/)
           | 
           | [1] Modeling the successes and failures of interventions for
           | disabled readers. (https://www.researchgate.net/publication/2
           | 43777699_Modeling_...)
           | 
           | [2] Learning to Read through Machine Teaching
           | (https://arxiv.org/abs/2006.16470)
           | 
           | [3] Education Advisory Board. (2019). Narrowing the Third-
           | grade Reading Gap: Embracing the Science of Reading, District
           | Leadership Forum: Research briefing
        
             | thundergolfer wrote:
             | Don't get me wrong I think your work is really cool and a
             | worthy cause, but surely the literacy crisis is a socio-
             | economic problem not a technological one.
        
               | tdekken wrote:
               | > surely the literacy crisis is a socio-economic problem
               | not a technological one.
               | 
               | Yes and no. It is, of course, not strictly a
               | technological one, but the argument that it is a socio-
               | economic one is, at best, an oversimplification. If you
               | are interested in a more complete understanding, I highly
               | recommend checking out APM's documentaries on this issue
               | (https://features.apmreports.org/reading/).
               | 
               | From my research, the underlying causes of the literacy
               | crisis are:
               | 
               | 1. The mistaken belief that reading, like speaking, is
               | biologically natural. This belief manifests as guidance
               | to surround your child with books and read to them.
               | Unfortunately, this isn't sufficient for the majority of
               | children.
               | 
               | 2. The majority of teachers lack the content knowledge to
               | teach children to read. For example, imagine helping a
               | child to sound out the word "father". What is the sound
               | of the second letter? It isn't a short 'a' nor a long
               | 'a'.
               | 
               | 3. Many popular programs used in schools are completely
               | debunked by science (e.g., cueing theory), but as a
               | teacher it is difficult to identify that your approach is
               | faulty. (If ~30% of children learn regardless of method,
               | it is too easy to offer excuses for why the other
               | children don't learn).
               | 
               | 4. Helping a struggling child is "rich man's game". If
               | you are high SES and your child is struggling, you will
               | pay a tutor to rectify the problem. That isn't an option
               | for the vast majority of families.
               | 
               | In other words, this is a highly complex puzzle and it is
               | completely understandable why society is seemingly no
               | closer to solving it :). Consequently, the majority of
               | our effort is directed at understanding these root causes
               | and identifying how to overcome them (FWIW, we have made
               | significant progress here). The cognitive modeling
               | portion is a small but plausibly important part of the
               | larger landscape.
        
               | thundergolfer wrote:
               | Thanks for the answer. I haven't learned that much about
               | this topic, but most of what I have learned is from
               | reading E.D Hirsch Jr.
               | 
               | Who would you recommend I read next?
        
               | tdekken wrote:
               | It depends how far down the rabbit hole you want to go
               | :). I highly recommend checking out APM's documentaries
               | on this issue (https://features.apmreports.org/reading/).
               | These are in-depth and accessible.
               | 
               | If you want to go further, you can read Moat's Speech to
               | Print, Seidenberg's Language at the Speed of Sight, and
               | many others. If you want to go even deeper, then welcome
               | to the firehose that is educational research :D.
        
         | ttul wrote:
         | Jeremy Howard's FastAI's course is another great one:
         | https://course.fast.ai/
         | 
         | I'm enrolled in their latest course via University of
         | Queensland; presently, they're teaching us by implementing one
         | of the latest text-to-image papers in PyTorch. They cover the
         | math as side lectures if you're interested in it and have the
         | pre-requisite knowledge. But it's not necessary if what you're
         | keen on is the programming of models.
        
       | polygamous_bat wrote:
       | I would recommend diffusion: try starting with Lilian Weng's blog
       | post and writing up the process for yourself. For all it's
       | abilities, the code for DDPM is surprisingly simple.
        
         | naillo wrote:
         | This is a great from-scratch (non bloaty) tutorial on this imo
         | https://colab.research.google.com/github/huggingface/diffusi...
        
       | la_fayette wrote:
       | I have implemented YOLO v1 and train/tested it on synthetic
       | images with geometric forms. Implementing the loss function
       | thought me a lot on how backpropagation really works. I used
       | keras/tf.
        
       | carom wrote:
       | Andrej Karpathy is currently releasing videos for a course [1]
       | that goes from zero to GPT.
       | 
       | 1. https://karpathy.ai/zero-to-hero.html
        
         | Heidaradar wrote:
         | thanks!
        
       | p1esk wrote:
       | It's best to choose something you personally find interesting,
       | for example, I'm interested in audio generation, so I'd pick some
       | papers that describe a music/voice generation model or algorithm,
       | but to you it might be something completely different.
       | 
       | When you do decide on a paper, take a look at Phil Wang's
       | implementation style:
       | https://github.com/lucidrains?tab=repositories, he has hundreds
       | of papers implemented.
       | 
       | If you don't already have a GPU machine, you can rent 40GB A100
       | instance for $1.1/hr or 24GB A10 for $0.6/hr:
       | https://lambdalabs.com/service/gpu-cloud.
        
         | Heidaradar wrote:
         | it's hard for me right now to tell if something is simple or
         | not to implement, but i totally agree! thanks for the links.
        
       | Artgor wrote:
       | You could start with Word2Vec or GloVe, for example. Another
       | option is to to with CV papers and start with Alexnet or first
       | ResNet.
        
         | Heidaradar wrote:
         | thanks!
        
       | manimino wrote:
       | I enjoyed doing this through the Coursera deep learning
       | specialization:
       | 
       | https://www.coursera.org/specializations/deep-learning
       | 
       | The lectures take you through each major paper, then you
       | implement the paper in the homework. Much faster than reading the
       | paper yourself.
        
         | Heidaradar wrote:
         | hmm, I found that I didn't really like this course but I'll
         | look through it again
        
       | paulmorio wrote:
       | I have done this a few times now. Alone (e.g.
       | https://github.com/paulmorio/geo2dr) and in collaboration with
       | others (e.g.
       | https://github.com/benedekrozemberczki/pytorch_geometric_tem...)
       | primarily as a way to learn about the methods I was interested in
       | from a research perspective whilst improving my skills in
       | software engineering. I am still learning.
       | 
       | Starting out I would recommend implementing fundamental building
       | blocks within whatever 'subculture' of ML you are interested in
       | whether that be DL, kernel methods, probabilistic models, etc.
       | 
       | Let's say you are interested in deep learning methods (as that's
       | something I could at least speak more confidently about). In that
       | case build yourself an MLP layer, then an RNN layer, then a GNN
       | layer, then a CNN layer, and an attention layer along with some
       | full models with those layers on some case studies exhibiting
       | different data modalities (images, graphs, signals). This should
       | give you a feel for the assumptions driving the inductive biases
       | in each layer and what motivates their existence (vs. an MLP). It
       | also gives you the all the building blocks you can then extend to
       | build every other DL layer+model out there. Another reason is
       | that these fundamental building blocks have been implemented many
       | times so you have a reference to look to when you get stuck.
       | 
       | On that note: here are some fun GNN papers to implement in order
       | of increasing difficulty (try building using vanilla PyTorch/Jax
       | instead of PyG). - SGC (from https://arxiv.org/abs/1902.07153) -
       | GCN (from https://arxiv.org/abs/1609.02907) - GAT (from
       | https://arxiv.org/abs/1710.10903)
       | 
       | After building the basic building blocks these should each take
       | about 2-5 hours (reading paper + implementation). Probably
       | quicker at the end with all this practice. Good luck and remember
       | to have fun!
        
       ___________________________________________________________________
       (page generated 2023-01-24 23:02 UTC)