Saturday, May 21, 2016

Wisdom Of The Week

What do you think of Deep Learning?

Deep learning works well across many applications when there is a lot of data, but what about one-shot or zero-shot learning, in which it is necessary to transfer and adapt knowledge from other domains to the current domain? What kinds of abstractions are formed by deep networks, and how can we reason with these abstractions and combine them? Networks can be fooled by adversarial inputs; how do we defend against these, and do they represent a fundamental flaw, or an irrelevant trick?

How do we deal with structure in a domain? We have recurrent networks to deal with time, and recursive networks to deal with nested structure, but it is too early to tell whether these are sufficient.

So I'm excited about Deep Learning because so many long-standing fields are excited about it. And I'm interested in understanding more because there are many remaining questions, and answers to these questions will not only tell us more about Deep Learning, but may help us understand Learning, Inference, and Representation in general.

[---]

Is there any place for software engineers that do not learn AI or Machine Learning in the next 10 years or does everyone have to learn it?

Machine Learning will be (or perhaps already is) such an important part of software engineering that everyone will have to understand where it fits in. But just like, say, database administration or user interface design, that doesn’t mean every engineer will have to be an expert in doing machine learning—it will be acceptable to work with others who are expert. But the more you know about machine learning, the better you will be at architecting a solution.

I also think that it will be important for machine learning experts and software engineers to come together to develop best practices for software development of machine learning systems. Currently we have a software testing regime where you define unit tests with calls to methods like assertTrue or assertEquals. We will need new testing processes that involve running experiments, analyzing the results, comparing today’s results to past results to look for drift, deciding if the drift is random variation or non-stationarity of the data, etc. This is a great area for software engineers and machine learning people to work together to build something new and better.


- Peter Norvig Quora Q&A

No comments: