How students can impress hiring managers

How can a student without any experience outside the classroom pique the interest of a hiring manager?

Have a project that:
1. Is eye catching when boiled down to a few bullets points on a resume
2. Leads to an engaging 20 minute conversation

As a hiring manager looking for machine learning researchers, I’ve reviewed 1000’s of resumes and conducted 100’s of interviews, and the toughest resumes for me to evaluate remain new grads without internships or publications.

Why? Let me compare how my initial conversations go with different types of candidates.

  • Experienced candidate with a prior job: “Let’s chat about when you deployed X network in production to achieve result Y”.
  • New grad with an internship: “Give me more details about what you did for company C during the summer.”
  • New grad with a paper: “I was reading your paper, and I had a question about ablation study A”.
  • Other new grads: “Let me look over your resume…, um yeah, I guess I’ll try and pay attention as you tell me about yet another class project that involved applying a pretrained ResNet model to MNIST.”

At this point, there are enough students doing ML that it is no longer sufficient to stand out by just having ML classes on your resume. But if you can get an internship or publication, that continues to stand out. So are you screwed without an internship or pub? Not at all! But you do need to do some work to spice up your class or capstone projects.

What can you do to make a project that stands out? Below are a few ideas biased towards my work on neural networks for real time embedded systems.

  1. Open source code. An estimated 10% of published papers have open sourced code. So take a cool new paper and code it up! Here is a very impressive repo that is well beyond a class project, but for a simpler project code up one single paper.
  2. Faster. Most academic papers and leader boards focus on performance, often to the detriment of runtime. I’m always impressed when someone can take a paper and speed it up with minimal drop in performance. Some ways to speed up networks include changing the architecture, pruning, and quantization.
  3. Smaller. Networks are massively over parametrized and much larger than they need to be. Grab a network, squeeze it down, and show you can fit it into an edge device. Check out SqueezeNet and the Lottery Ticket Hypothesis for interesting papers in this area.
  4. Cheaper. Training state of the art neural networks is extremely time consuming and costly. Demonstrate how to train a network with a limited GPU hour budget and still get reasonable performance. Check out some ideas from Fast.ai for fast training and this article for training on a single GPU.
  5. Multitask. Academic networks are usually single task, but real time networks are usually Frankensteins with a shared feature map supporting multiple tasks. I recommend this review paper as well as this more recent paper to get started.

Hope that helps! I look forward to chatting with you about these cool projects!

Advertisement

NSF GRFP 2018-2019

Thanks to everyone who has been sending me new essays to host. Its crazy that my advice page went from only my essays and thoughts to 93 different examples!

I have to give a disclaimer that I haven’t been following changes to the NSF GRFP as closely this past year, but I think that my general advice still holds. If something seems outdated or wrong, please let me know. I always highly recommend getting multiple opinions and I’m glad that many people who have shared their essays are also writing about their experiences. Also check out the Grad Cafe for useful discussions.

Good luck everyone!

Basic Income

Recently the Swiss voted no on their referendum to implement basic income. Personally, I think that we should strongly consider implementing a basic income in the United States. At the minimum, I think that we deserve a national conversation on poverty that should include a serious discussion of the pros and cons of basic income. Therefore, I got really pissed off by this recent piece in the New York Times (or this, etc).

The author dismisses basic income out of hand for two major reasons:

  1. Cost (proposal of $10,000 to everyone over 21 for a total of $3 trillion)
  2. Negative effect on the poor (through government cuts due to the cost of implementing the above basic income)

I’ll go through the details below, but some rudimentary math shows that basic income could be paid for in the United States by tax increases that would not be a burden on the poor (or even most of the middle class). Thus, no government programs would need to be cut.

The purpose of this exercise is not to propose a foolproof implementation of basic income. Instead, I want to show that dismissing basic income due to cost is incorrect. If you want to debate basic income, the real issue is how our employment-centered economy would be changed by altering people’s motivation to work.

Here is a the conclusion of the calculations, please read on for all the details. I estimate that $11,500 (ie the US poverty line) could be paid to every non-Social Security receiving adult and $5750 (half the adult payment) to every child by adding a new flat tax on income (adjusted gross income) of 26.6% (see the appendix for alternative proposals that include a lower flat tax). This means that any individual that makes less than $49,500 would get MORE money from the government under this simple plan. Therefore, around 70% of non-Social Security US adults would get more money from the government.

 

Simple Calculation

Estimate Cost

I will start off by calculating the cost of basic income. First, how many people do we need to cover? I am going to ignore the 65 million that are on Social Security. My reasoning is that Social Security is almost a basic income (or could be with a few reforms) and that it is financially secure if we eliminate the cap ($118,500) on the payroll tax but do not increase benefits (see here and here for details).

Looking at the US census facts, there are 74 million children under 18, leaving 183 million US adults not on Social Security. I’m propose paying a half-adult benefit for children, so that means adult benefits will be paid to an effective population of 220 million.

Therefore, if each individual approximately gets the US poverty line, ($11,500), this would result in a total cost of $2.53 trillion.

Estimate Flat Tax

So how could we pay for this? The simplest possible mechanism would be a new flat tax on personal income.

The total US personal income in 2014 was $14.7 trillion. However, not all of that is taxable income (standard deductions, mortgage interest deduction, etc), so the actual taxable personal income is the adjusted gross income (AGI). Using some old numbers on AGI, I estimate that the total US AGI was $9.5 trillion in 2014.

Since the cost is $2.53 trillion, and US AGI is $9.5 trillion, that gives a flat tax rate of 26.6%.

Estimate Break Even Point

For a single individual, the standard deduction is $6300 (this amount of income is not taxed). It would take a taxable income of $43,180 to have a flat tax burden equal to the new basic income. Combine that with the standard deduction, and rounding a bit, leads to the conclusion that anyone making under $49,500 would gain money from the basic income/flat tax proposal.

 

Conclusion

Please don’t dismiss basic income purely out of cost. As the estimates above show, one could introduce basic income and pay for it with a new tax in a manner that preserves all other government programs.

I think there are two major reasons to embrace basic income:

  1. Fairness
  2. Needed security due to potential changes in employment

Maybe the fairness argument doesn’t fit with everyone’s political leanings, but I think the future of employment is strong motivation. Each new technological revolution seems to require fewer and fewer workers (compare Ford’s workforce vs Google’s). Since I don’t see that trend reversing and machine learning / artificial intelligence should actually accelerate it, I think we need to be proactive and provide a floor for people before we have large unemployment.

However, I recognize that basic income is a very controversial idea. That is why I am interested in seeing experimental implementations of it. While this experiment is nice, it really is too small to truly learn anything from. Instead, I would love to see a national trial. Why not start at a very small number, and slowly increase it over time? That would allow us to adapt to the changing culture (ie potentially NOT work centric) and make sure that there are no adverse incentives. For example, my dumb proposal of a half benefit to children needs to be more carefully monitored to ensure that people do not have children just for the sake of getting their share of the benefit.

No matter what you think, the debate isn’t going away. So we might as well start examining it now.

 


Appendix: Other Possible Tax Plans

Here I outline my own personal preferences for tax reforms (in addition to a flat tax) that could be used to pay for basic income. Note that all dollar amounts are per year.

Tax Reforms Within Current System

All numbers listed below are the estimated cost per year of the various deductions.

These are some tax reforms that many economists support:

I think this program is superseded by the introduction of a basic income:

And here are some additional reforms I support:

  • Tax capital gains and dividends as regular income ($85 billion)
  • Limit deductions for the wealthy ($25 billion)
  • Variety of corporate tax reforms ($40 billion) (I don’t understand depreciation so only the others on the list)

This comes to a total reform of $335 billion.

Note: I could have included food stamps or unemployment benefits in the superseded cost savings, but I’m going to assume that the benefits get reformed, but the money still is diverted towards health and employment initiatives respectively.

VAT

I would propose adding a federal value added tax as is common in Europe (see here for pros/cons). Bloomberg estimates that a VAT of 10% on a broad base of items would raise $750 billion per year. For ease of collection, this should be accompanied by a local/state replacement of the standard sales tax (which generates around $500 billion per year, or effectively a 6.66% VAT). I propose a 15% VAT (similar to European rates) that is split evenly between local/state governments and the federal government. This would generate $560 billion additional federal revenue (as a bonus the states get an additional $60 billion).

Financial Transaction Tax

This would impose a small fee on all financial transactions. If we implemented a 0.05% transaction fee (ie 50 cents on every $1000), this would raise an additional $90 billion.

Estate / Transfer Taxes

Currently $1.2 trillion is inherited per year, but estate taxes only bring in $8 billion in revenue. I suggest an estate / transfer tax reform to collect more revenue from this. I would structure it in a progressive manner (ie increasing with wealth), but I again just want to estimate the necessary average rate. If an average rate of 25% was applied to estates, this would lead to an additional $290 billion.

Personal Income Flat Tax

In the end, we still need $1.255 trillion in new revenue. And since the US AGI is $9.5 trillion (it would be slightly higher after the above reforms, but I will ignore that), that implies that we would need to implement a 13.2% flat tax to raise $1.255 trillion.

Summary

If one does a similar flat tax break even point, for people below $93,400 would receive more in basic income than in the flat tax. However, this is misleading since I no easy way to estimate the increase taxes due to the VAT. A worse-case scenario would be that people spend their complete income every year on VAT taxable items. Since there is currently an effective VAT of 6.66%, this is a VAT increase of 8.33%. So a break-even point for the combined flat tax / VAT rate (21.55%) would be $59,600. All the other taxes are much more complicated so I have no easy estimate for them.

The main point of this detailed appendix is that one could replace the flat income tax with a diverse set of taxes that again would not be an unfair burden on the poor or middle class. Additionally, the tax base would be diversified and less prone to swings in the economy.

Thoughts on OpenAI

OpenAI was started just over 6 months ago, and I feel like they have done enough to warrant a review of what they have done so far, and my thoughts of what they should do next.

What is OpenAI?

OpenAI was announced in December 2015 and their stated mission is:

OpenAI is a non-profit artificial intelligence research company. Our goal is to advance digital intelligence in the way that is most likely to benefit humanity as a whole, unconstrained by a need to generate financial return.

In the short term, we’re building on recent advances in AI research and working towards the next set of breakthroughs.

 

What have they done so far?

  1. Started a new, small (so far) research center
  2. Experimented with a novel organization of the research center
  3. Hired a variety of smart people
  4. Released a toolkit for reinforcement learning (RL)

Since it has only been six months and they are still getting setup, it is still difficult to assess how well they have done. But here are my first impressions of the above points.

  1. Always great to have more places hiring researchers!
  2. Way too early to assess. I’m always intrigued by experiments of new ways to organize research, since there are three dominant types of organizations today (academia, industry focused on development, and industry focused on longterm research).
  3. Bodes well for their future success.
  4. I have yet to use it, but the it looks awesome. Supervised learning was sped along by datasets such as UC Irvine’s Machine Learning Repository, MNIST, and Imagenet, and I think their toolkit could have a similar impact on RL.

 

What do I think they should do?

This blog post was motivated by me having a large list of things that I think OpenAI should be doing. After I started writing, I realized that many of the things on my wish list would probably be better run by a new research institute, which I will detail in a future post. So here, I focus on my research wish-list for OpenAI.

Keep the Data Flowing

As Neil Lawrence pointed out shortly after OpenAI’s launch, data is king. So I am very happy with OpenAI’s RL toolkit. I hope that they keep adding new datasets or environments that machine learners can use. Some future ideas include supporting new competitions (maybe in partnership with Kaggle?), partnering with organizations to open up their data, and introducing datasets for unsupervised learning.

Unsupervised Learning

But maybe I’m putting the cart (data) before the horse (algorithms and understanding). Unsupervised learning is tough for a series of interconnected issues:

  • What are good test cases / datasets for unsupervised learning?
  • How does one assess learning success?
  • Are our current algorithms even close to the “best”?

The reason supervised learning is easier is that algorithms require data with labels, there are lots of established metrics for evaluating success (for example, accuracy of label predictions), and we know for most metrics what is the best (100% correct label predictions). Reinforcement learning has some of that (data and a score), but is much less well defined that supervised learning.

So while I think the progress on reinforcement learning will definitely lead to new ideas for unsupervised learning, more work needs to be done directly on unsupervised learning. And since they have no profit motives or tenure pressure, I really hope OpenAI focuses on this extremely tough area.

Support Deep Learning Libraries

We currently have a very good problem: lots of deep learning libraries, to the point of almost being too many. A few years ago, everyone had to essentially code their own library, but now one can choose from Theano and TensorFlow for low end libraries, to Lasagne and Keras for high end libraries, just to name a few examples from Python.

I think that OpenAI could play a useful role in standardization and testing of libraries. While there are tons of great existing libraries, their documentation quality varies significantly, and in general is sub par (for example compared to NumPy). Additionally, besides choosing a language (I strongly advocate Python), one usually needs to choose a backend library (Theano vs TensorFlow), and then a high end library.

So my specific proposal for OpenAI is the following initiatives:

  1. Help establish some deep learning standards so people can verify the accuracy of a library and assess its quality and speed
  2. Set up some meetings between Theano, TensorFlow, and others to help standardize the backend (and include them in the settings of standards)
  3. Support initiatives for developers to improve documentation of their libraries
  4. Support projects that are agnostic to the backend (like Keras) and/or help other packages that are backend specific (like Lasagne) become backend agnostic

As a recent learning of deep learning, and someone who interacts extensively with non-machine learners, I think the above initiatives would allow a wider population of researchers to incorporate deep learning in their research.

Support Machine Learning Education

I believe this is the crucial area that OpenAI is missing, and it will prevent them from their stated mission to help all of humanity.

Check out a future post for my proposed solution…

Python on a Mac

I personally do most of my coding on my laptop, which is a Mac. Eventually that code gets run on a Linux server, but all initial coding, exploratory data analysis, etc is done on my laptop. And since I advocate for Python, I thought I would lay out all the steps I needed to do to setup my Mac in the easiest manner. (Note: probably similar steps on Windows, but I haven’t used a Windows computer in so long that I don’t know the potential differences).

8rYYWPNYNN-2

Unfortunately, the Python 2.x vs 3.x divide exists and so far, I have yet to be able to completely commit to 3.x due to a few packages with legacy issues. Luckily, there is a pretty easy solution below. Note, your Mac has Python preinstalled (go to terminal and type python to start coding…). However, if you want to update any packages, you can quickly run into issues. So it is easiest to install your own version of Python.

  1. Install Anaconda (I advocate version 2.7, Anaconda will call this environment root)
  2. I recommend using Anaconda Navigator and using Spyder for an IDE
  3. Install version 3.5 and make an environment (in Anaconda Navigator or terminal commands below):
    $ conda create -n python3.5 python=3.5 anaconda
  4. You can switch between python environments  {root, python3.5}
    $ source activate {insert environment name here}
  5. To add new python packages use conda or pip (anaconda has made its own pip the default)
  6. WARNING: always close Spyder before using conda update or pip. I got stuck in some weird place where Spyder would no longer launch. Apparently it can happen if Spyder is open and underlying packages get changed.

To get around the 2.x vs 3.x issue, go to your terminal and use pip install for the following packages: future, importlib, unittest2, and argparse. See the package’s website for details of any differences. Then, start your Python code with the following two lines:

from __future__ import (absolute_import, division, print_function, 
unicode_literals)

from builtins import *

For nearly all scientific computing applications, you are essentially writing Python 3 code. So make sure to read the correct documentation!

Personally, I found Anaconda to be a lifesaver. Otherwise, I got stuck in some weird infinite update loop to install all required packages for machine learning (specifically Theano).

Now you are ready to code! If you aren’t familiar with Python, my recommended tutorials will be in a future post.

 

Webmaster Buddy

Feel free to leave comments on posts. In order to stop spam, if you are a first time commenter, your comment will be held and must be approved by the webmaster Buddy:

Buddy_computer

Whether your comment is deemed spam will be arbitrarily decided by the whims of Buddy. He can be bribed with treats such as peanut butter and Cesar’s. Don’t expect a prompt response, since Buddy’s usual state is this:

Buddy_sleep

Initial Conditions

I (ie Alex Lang) am a physics PhD currently doing my postdoctorate research at the Salk Institute in San Diego. I work on a variety of research topics such as physics, computational neuroscience, machine learning and theoretical biophysics. As an outsider, that probably looks like a jumble of topics, but I swear, there is a theme! In my research, I apply techniques (both conceptual and mathematical) from statistical physics to a variety of problems. Statistical physics is the domain of physics that applies to large systems (number of “particles” N when N \gg 1). In many ways large systems are simpler than small systems, so taking the extremely large system size limit (N \to \infty) often brings useful insights into a problem. So the blog name is inspired from statistical physics, my broad interests, and of course, Buzz Lightyear.

The blog will focus on research topics of interest to me and hopefully others. I will also blog about research in general, what academia is like, and other science-like things (including science-fiction!).

I will focus on occasional, but detailed posts. My personal goal for 2016 is 25 posts of substance, so one every two weeks. I’m hoping the journal club we are starting up at the Salk will provide plenty of material, more details on that soon.

If you are interested in following, I personally enjoy Feedly as a RSS Reader. Or you can sign up for email alerts (see sidebar) or follow me on Twitter @n2infty.