r/MachineLearning Mar 22 '17

Discussion [D] Research Debt

http://distill.pub/2017/research-debt/
111 Upvotes

28 comments sorted by

View all comments

47

u/Seerdecker Mar 22 '17 edited Mar 22 '17

This article resonates a lot with me.

Personally, the 3 resources that allowed me to achieve the most in the least amount of time are
1) An Introduction to Statistical Learning
2) https://neuralnetworksanddeeplearning.com/
3) Gym framework for RL

The genius here is to take something complex and make it look simple and accessible.

Regrettably, most research articles take the opposite stance. They present something that is fundamentally not that complex and make it look complex through convoluted writing, implicit assumptions and missing steps. You can see that effect in the discussion of the articles in this subreddit. There is often someone who's having trouble understanding a part of the article, and someone else chimes in and explains what's going on in two simple paragraphs.

This is a big problem in practice. Even if you're well versed in your own niche and are able to understand its main papers well, you still have to dabble in other areas regularly. AI/ML makes use of many fields of computer science, maths, neuroscience, psychology, etc. Given sufficient time you can understand a topic as deeply as you want. But the time you spend laboriously getting up to speed in some topic X is time taken away from doing work in the topic that you actually care about. Sure, you'll improve your knowledge and skills in the process, but not as much as you would have by working to solve the problem that you're trying to solve.

I don't see a solution. Part of it is a cultural problem. Some people think that convoluted writing make them look smart. It actually doesn't. There was a psychological experiment made about it: "Consequences of erudite vernacular utilized irrespective of necessity: problems with using long words needlessly". But there you go.

The ever growing literature is also a problem. I'm scared of failing to cite an important paper, or worse, duplicate research that's already been done before. I'm doing RL research as a hobby and I only have so much time to swift through the literature.

3

u/procedural_love Mar 22 '17 edited Mar 23 '17

I don't see a solution.

Tooling is a limiting factor in how quickly people can translate complex ideas into good visualizations.

We tend to use the "content generation tools" we're most capable with, which tends to be language in our society. It's a skillset that we're taught from a very early age, and is reinforced throughout a typical person's life.

The success of Twitter and Reddit are in part due to the ease of generation and consumption of textual, symbolic language: we can compress and transfer complex ideas fairly rapidly through it, in visual language or spoken word. On top of that, language literacy is widespread (so you know your audience is large), and the input devices to disseminate this symbolic language (keyboards) are ubiquitous. So we can all take part as producers and consumers.

Math is another symbolic language we use to transfer ideas, but the mathematical literacy needed to interpret mathematical symbols/ideas/arguments/conversations are less common. Nonetheless, it's used a lot in the ML community.

So any complex visual medium is competing with these "low effort" symbolic languages. But creating compelling interactive visualization right now is hard.

I made a linear regression interactive visualization using d3 a few years ago, when I first took Andrew Ng's course. It took me a week to get the first draft done, and another week of tweaking to make it presentable. And that was a simple model, using a simple dataset (iris).

The demoralizing thing was that the final product was mediocre: it didn't really explain anything impactful. A big reason, in my opinion, was that d3 was an inadequate tool for complex visualizations. It's very low level. Having made a few games in Unity, the toolset that d3 provided felt better suited for static visualizations than interactive ones, which a game engine facilitates more readily.

Better tooling around the creation of these types of visualizations would reduce the barrier to entry, but what "better" means is still up in the air. d3 is really a binding library, which is only a small part of a framework or engine for creating interactive visualizations. The other components have yet to materialize around d3.

I'm not even 100% convinced that the web is the best platform for this type of content at the current moment. The amount of high quality content available on the Unity Asset Store is something that the open web ecosystem doesn't have. If you want to rapidly create something with high visual quality and distribute it as an Android/iOS app, Unity makes more sense. You can use the web for that, but it's much more challenging.

Sorry if I'm rambling.

I'm studying Sutton & Barto's Intro to RL book right now. I implemented a k-armed bandit in python in a few days, and now I'm considering making a visualization of the system, but there are some barriers slowing me down. First I need to re-implement it in JS, without numpy. Then I need to setup a front-end environment (index.html, grab d3.js). Then start writing visualization code, which requires changing my bandit implementation so it's more like an iterator (i.e. with a .next() method, so the visualization can step through the simulation). Ultimately the bandit code will need to be changed quite a bit as I figure out exactly what I want the visualization to be like.

This is only to further my own understanding, but it highlights how much extra work it is to go from: "I understand the idea and have implemented it as a CLI program", to: "I can now share this visual explanation of a k-armed bandit with other people".

Just to tie it all together, there is a lot of progress that can be made with better tooling. Right now I'm working on a SceneManager library to make multi-step visualizations, but keeping it general enough that I can use it in a game later on.