본문 바로가기

Enginius/Machine Learning

About Deep Learning by Michael Jordan

Deep Learning에 대한 Michael Jordan 교수님의 생각


참고로 이 교수님은 Latent Dirichlet Allocation (LDA), Hierarchical Dirichlet Processes (HDP)로 대표되는 Graphical model의 대가이시다. 개인적으로 Graphical Model (GM)과 Deep Learning (DL)의 차이점은 다음과 같다. 

GM은 노드들이 우리의 관심사이다. 각 노드는 확률 변수를 뜻하며 노드와 노드를 잇는 엣지는 conditional distribution을 의미한다. DL은 노드보다는 엣지에 관심이 많다. 엣지에 모든 정보가 담겨있기 때문이다.

 다시 말해서 GM은 Gibbs sampling이나 Variational Inference를 통해서 노드의 값을 바꾸고, DL은 Contrastive Divergence 등을 통해서 엣지의 값을 바꾼다


참고로 아래의 한글은 "번역"이 아니라 "오역"임을 미리 밝히는 바이다..  

Do you expect more custom, problem specific graphical models to outperform the ubiquitous, deep, layered, boringly similar neural networks in the future?

 - 그래피컬 모델이 딥 러닝을 능가할 것으로 보시나요? 


Michael Jordan 

 - 마이클 조던! 농구 선수가 아니다! 

   


OK, I guess that I have to say something about "deep learning". This seems like as good a place as any (apologies, though, for not responding directly to your question).

 먼저 딥 러닝에 대해서 얘기를 해보겠습니다. (당신 질문에 대한 대답이 아니여서 미안)

"Deep" breath. 

My first and main reaction is that I'm totally happy that any area of machine learning (aka, statistical inference and decision-making; see my other post  is beginning to make impact on real-world problems. I'm in particular happy that the work of my long-time friend Yann LeCun is being recognized, promoted and built upon. Convolutional neural networks are just a plain good idea.

 - 나의 가장 첫번째, 그리고 주된 반응은, 기계 학습의 분야 (통계학적 inference, 결정 내리기)가 실제 생활에 영향을 미치고 있다는 것에 기쁘다는 것이다. 내 오랜 친구인 얀 리쿤의 연구들이 인정받고, 사용되고 있다는 것이 특별히 기쁘다. 컨볼루셔널 뉴럴 네트워크는 좋은 아이디어이다. 


I'm also overall happy with the rebranding associated with the usage of the term "deep learning" instead of "neural networks". In other engineering areas, the idea of using pipelines, flow diagrams and layered architectures to build complex systems is quite well entrenched, and our field should be working (inter alia) on principles for building such systems. The word "deep" just means that to me---layering (and I hope that the language eventually evolves toward such drier words...). I hope and expect to see more people developing architectures that use other kinds of modules and pipelines, not restricting themselves to layers of "neurons".

 - 또한 뉴럴넷 대신에 딥러닝이란 단어가 사용되고 있는 것이 기쁘다. 기쁜 것도 참 많다.. 다른 공학 분야에서는 파이프라인, 플로우 다이어그램, 레이어드 구조를 이용해서 복잡한 시스템을 다루는 것이 잘 이뤄졌지만, 우리 분야에서는 이를 더 진행할 필요가 있다고 생각한다. deep이란 단어는 레이어링 이라는 단어로 다가온다. 나는 다른 사람들이 "뉴론의 레이어"로만 한정하지 말고, 여러 파이프라인과 모듈을 같는 구조를 개발하길 바란다. 


With all due respect to neuroscience, one of the major scientific areas for the next several hundred years, I don't think that we're at the point where we understand very much at all about how thought arises in networks of neurons, and I still don't see neuroscience as a major generator for ideas on how to build inference and decision-making systems in detail. Notions like "parallel is good" and "layering is good" could well (and have) been developed entirely independently of thinking about brains.

 - 앞으로 수백년간 주된 연구분야 중 하나인 뉴로사이언스를 높이 사지만, 뉴론의 네트워크에 대해서 우리가 많이 알고있지 않다고 생각한다, 그리고 나는 뉴로사이언스가 결정을 내리고, inference를 하는데 큰 동력이 된다고 생각하지 않는다. "병렬처리가 좋다", 혹은 "레이어링이 좋다"라는 개념은 뇌에 대한 연구와 독립적으로 많이 이뤄졌었다. 


I might add that I was a PhD student in the early days of neural networks, before backpropagation had been (re)-invented, where the focus was on the Hebb rule and other "neurally plausible" algorithms. Anything that the brain couldn't do was to be avoided; we needed to be pure in order to find our way to new styles of thinking. And then Dave Rumelhart started exploring backpropagation---clearly leaving behind the neurally-plausible constraint---and suddenly the systems became much more powerful. This made an impact on me. Let's not impose artificial constraints based on cartoon models of topics in science that we don't yet understand.

 - 내가 또 언급하고 싶은 것은, 백 프로파게이션이 개발 되기도 전에 난 뉴럴넷을 연구하는 박사 학생이었고, 우리는 헵 러닝 (헤비안 러닝, 좋은 것을 강화하는 학습 방법)이나 다른 뉴론이 할만한 알고리즘들을 연구했었다. BP가 1986년에 나왔으니.. 내가 태어나기도 전에 박사과정 학생이었군.. 그때는 뇌가 할 수 없는 것은 기피되었다. 그 때 Dave Rumelhart가 BP를 연구하기 시작했었고, 이는 뇌가 할 수 없는 행동이었다. 그러고 나서 시스템은 매우 강력해졌다. 이러한 사실은 나에게 큰 영향을 미쳤다. 즉 우리의 인공 모형을 우리가 잘 알지도 못하는 뇌의 모형으로 한정짓지 말자는 것이다. 


My understanding is that many if not most of the "deep learning success stories" involve supervised learning (i.e., backpropagation) and massive amounts of data. Layered architectures involving lots of linearity, some smooth nonlinearities, and stochastic gradient descent seem to be able to memorize huge numbers of patterns while interpolating smoothly (not oscillating) "between" the patterns; moreover, there seems to be an ability to discard irrelevant details, particularly if aided by weight- sharing in domains like vision where it's appropriate. There's also some of the advantages of ensembling. Overall an appealing mix. But this mix doesn't feel singularly "neural" (particularly the need for large amounts of labeled data).

 - 내 개인적 이해는 대부분의 심도학습의 성공적 사례는 엄청난 데이터를 이용한 supervised learning에 있다고 본다. Layered 구조 (많은 선형성, smooth한 비선형성, 그리고 SGD를 포함한) ... 여긴 모라고 번역하는게 어렵다. 느낌만 말하자면 기존 학습들이 neural하지 않다는 것 같다. 


Indeed, it's unsupervised learning that has always been viewed as the Holy Grail; it's presumably what the brain excels at and what's really going to be needed to build real "brain-inspired computers". But here I have some trouble distinguishing the real progress from the hype. It's my understanding that in vision at least, the unsupervised learning ideas are not responsible for some of the recent results; it's the supervised training based on large data sets.

 - 가장 중요하게 생각되었던 것은 항상 unsupervised learning 이었다. 그리고 이것이 진짜 뇌에서 영감을 받은 컴퓨터를 만드는데 중요한 것이라고 생각한다. 여기가 바로 실제 일어나는 일과 광고와 다른 점이 있다. 즉 최근에 있는 결과들은 supervised learning의 결과라고 생각한다. 


One way to approach unsupervised learning is to write down various formal characterizations of what good "features" or "representations" should look like and tie them to various assumptions that seem to be of real-world relevance. This has long been done in the neural network literature (but also far beyond). I've seen yet more work in this vein in the deep learning work and I think that that's great. But I personally think that the way to go is to put those formal characterizations into optimization functionals or Bayesian priors, and then develop procedures that explicitly try to optimize (or integrate) with respect to them. This will be hard and it's an ongoing problem to approximate. In some of the deep learning learning work that I've seen recently, there's a different tack---one uses one's favorite neural network architecture, analyses some data and says "Look, it embodies those desired characterizations without having them built in". That's the old-style neural network reasoning, where it was assumed that just because it was "neural" it embodied some kind of special sauce. That logic didn't work for me then, nor does it work for me now. 

 - unsupervised learning에 접근하는 한 가지 방법은 여러가지의 formal characterization을들 보고, 어떤 feature 혹은 representation이 이들을 잘 표현하는지를 보고, 실제 데이터를 바탕으로 여러가지 가정으로 이들을 묶는 것이다. (쉽게 생각해서 데이터를 잘 표현할 수 있는 관계를 찾기) 이러한 접근은 심도 학습에서 해왔던 것이다. 심도 학습의 정수(?)에 이러한 방식이 들어있고, 이는 좋다고 생각한다. 하지만 나 개인적으로는 이러한 formal characterization들을 비용 함수에 넣거나 Bayesian prior로 표현하고, 이들을 최적화하는 것이 더 좋은 방법이라고 생각한다. 내가 최근에 본 심도 학습은, 특정 신경망 구조를 학습시키고, "봐바, 자동으로 원하는 characterization을 했어!" 라고 말하는 것 같다. 그리고 그 이유가 "neural"이기 때문이라고 가정한다. 이러한 논리는 예전에도 그렇고, 지금도 나에겐 와닫지않는다. 


Lastly, and on a less philosophical level, while I do think of neural networks as one important tool in the toolbox, I find myself surprisingly rarely going to that tool when I'm consulting out in industry. I find that industry people are often looking to solve a range of other problems, often not involving "pattern recognition" problems of the kind I associate with neural networks. E.g., (1) How can I build and serve models within a certain time budget so that I get answers with a desired level of accuracy, no matter how much data I have? (2) How can I get meaningful error bars or other measures of performance on all of the queries to my database? (3) How do I merge statistical thinking with database thinking (e.g., joins) so that I can clean data effectively and merge heterogeneous data sources? (4) How do I visualize data, and in general how do I reduce my data and present my inferences so that humans can understand what's going on? (5) How can I do diagnostics so that I don't roll out a system that's flawed or figure out that an existing system is now broken? (6) How do I deal with non-stationarity? (7) How do I do some targeted experiments, merged with my huge existing datasets, so that I can assert that some variables have a causal effect? 

 - 마지막으로, 그리고 덜 철학적으로, 내가 신경망을 툴박스의 중요한 툴로 생각할 때, 내가 산업에 컨설팅을 할 때 그 툴을 잘 안꺼내게 된다. 산업에 있는 사람들은 패턴 인식 문제를 다루지 않는 문제를 다루곤 한다. 예를 들어 

(1) 특정 시간 버젯이 있는 상황에서 모델을 만들고, 다룰수 있을까? 이 경우는 accuracy에 따른 대답을 줘야한다. 데이터 수에 무관하게 말이다. 

(2) 어떻게 의미있는 에러 척도를 만들 수 있을까.

(3) 어떻게 통계학적 생각과 데이터베이스 생각을 합칠 수 있을까. 그래서 데이터를 효과적으로 제우고, 어려 개의 소스를 합칠 수 있을까

(4) 내가 데이터를 어떻게 시각과할 수 있을까? 그리고, 그리고 데이터를 어떻게 줄일 수 있을까. 그래서 사람이 어떻게 inference가 이뤄지는지 보게할 수 있을까.

(5) 어떻게 문제가 생긴 곳을 알 수 있을까.

(6) non-stationarity를 어떻게 다룰까.

(7) targeted experiment를 통해서, 특정 변수가 지대한 영향을 미친다는 것을 알 수 있을까? 


Although I could possibly investigate such issues in the context of deep learning ideas, I generally find it a whole lot more transparent to investigate them in the context of simpler building blocks.

Based on seeing the kinds of questions I've discussed above arising again and again over the years I've concluded that statistics/ML needs a deeper engagement with people in CS systems and databases, not just with AI people, which has been the main kind of engagement going on in previous decades (and still remains the focus of "deep learning"). I've personally been doing exactly that at Berkeley, in the context of the "RAD Lab" from 2006 to 2011 and in the current context of the "AMP Lab".

 - 이러한 이슈들을 심도 학습을 통해서 다룰 수도 있겠지만, 난 일반적으로 간단한 building block들을 통해서 이러한 문제를 다루는 것이 더 효과적이고 분명하다고 생각된다. 위에서 언급한 문제들은 CS 시스템과, 데이터베이스를 다루는 사람들과 교류를 하면세 계속 나왔었다. 단순히 AI 사람들만이 아니라. 난 현재 이러한 일들을 버클리에서 하고 있다. 


'Enginius > Machine Learning' 카테고리의 다른 글

Scaling Up Deep Learning - Yoshua Bengio  (0) 2014.10.21
Dirichlet Mixture Model  (0) 2014.10.21
Fundamental Group  (0) 2014.09.03
[NGP] Leveraged Kernel  (0) 2014.08.22
Deep Learning이란 무엇일까?  (4) 2014.08.02