www.youtube.com/watch?v=rSY1pVGdZ4I&list=PL_iWQOsE6TfVmKkQHucjPAoRtIJYt8a5A&index=1
Part 1
<Machine Translation>
모델은 언어의 universal representation을 배우는 것과 같다. 그 후에 타겟 언어로 decoding하는 것이다.
만약에 모델이 더 common 언어에 대해서 학습이 되어있다면 rare 언어로 번역하는 것이 쉬울 것이다.
여기서 zero-shot machine translation에 대해서도 언급하였는데, zero-shot이라는 단어로부터 알 수 있듯이 한 번도 본적 없는 언어를 번역하는 것이다.
또한 multilingual translation model에서 만약 target 언어(desired language)가 40% spanish, 60% french와 같이 섞여진 형태라면 이 또한 모델이 학습할 수 있다.
아래는 구글의 multilingual model 논문에 대한 내용인데 weight를 조절함에 따라 결과가 특정 언어로 얼마나 translation됐는지를 확인할 수 있다.
또 일본어와 한국어에 대한 결과도 있는데,
이미 0.60일 때부터 모든게 한국어로 쓰여있지만 한국어로 갈 수록 문법이 한국스러워지는 것을 알 수 있다.
(신기하구만)
또 다른 예로 러시아어와 벨라루스어에 대한 결과가 있다.
흥미로운 건 weight가 0.44, 0.46일 때의 결과는 러시아어도 아니고 벨라루스어도 아니라는 것이다.
우크라이나어에 가깝다고 한다.
그래서, 한 언어를 다른 언어로 번역할 때 standard translation model와 같이 바로 번역하는 방식을 사용할 수도 있지만, 아래와 같이 그 언어에 대한 thought를 거쳐 번역하는 방식도 있다.
요약해서 말하자면, Machine translation은 thought에 대한 represenation이 핵심이라 그것만 잘 학습된다면 다른 언어로 바꾸는 것은 그리 어려운 일이 아니라고 말한다.
the "thought" is a represenation
이 Representation에 대해 생각해보자.
<Representation Learning>
딥러닝의 핵심은 텍스트, 이미지 등등의 어떤 input에 대한 represenation이라고 한다.
정말 모든것은 representation인 것 같다. 앞서 말한 번역도, 이미지 분류도 다 그에 대한 representation을 기반으로 하기 때문이다. 가장 베이직하게 생각하면 CNN에서 마지막 softmax를 거쳐 확률값으로 계산되기 전에 벡터가 represenation이라고 생각할 수 있다. 또 text classfication 같은 경우도 다 그런 represention으로 class를 구분하니 모든 모델은 semantic 정보와 같은 핵심 정보를 얼마나 잘 담은 representation을 만드냐가 핵심이다.
Part 2
Part 2에서는 강의에 대한 overview에 대해 간략하게 설명한다.
특히 Advanced topics에 대한 내용이 기대된다. 학교에서 딥러닝 강의를 들은지 몇년 전이기 때문에 최신의 (?) 강의에서는 어떤 것을 다룰지가 궁금하다.ㅎㅎ
What is Machine Learning?
Machine Learning은 일반적으로 말하자면, Input을 Computer program을 거쳐 output으로 바꾸는 것을 말한다. 물론 이런 것을 rule-based로 할 수 있다.
하지만 예를 들어 강아지 이미지를 input으로 할 때, rule를 무엇으로 해야할 까?
강아지 전문가한테 물어봐야하나? 꼬리의 길이 등등 이는 너무 예외가 많고 복잡하다.
가장 쉬운 방법은 많은 강아지에 대한 많은 이미지를 보여주고 배우는 것이다.
강아지 이미지는 좀 복잡하니 더 쉬운 예로 보자.
어떤 값들이 있다고 할 때 특정 함수 선 아래에 있다면 True, 아니라면 False를 주는 computer program을 생각해보자.
computer program은 저 선에 대한 파라미터 즉, theta들을 배우는 것과 같다고 할 수 있다.
위와 같은 단순한 polynomial말고 일반적으로 표현해보자면 다음과 같다.
즉, 여러 parameter로 이루어진 함수의 parameter를 학습하는 것이 "LEARNING"이라 할 수 있다.
"DEEP"으로 들어가기 전에 "SHALLOW" learning에 대해 생각해보자.
왼쪽 아래와 같이 gradient와 같은 feature를 사용하여 예측을 할 수 있다.
하지만 이런 Input에서 feature를 제대로 뽑아내는 것은 매우 어렵다.(위에서 말한 representation과 같은 맥락)
이런 feature를 어떻게 잘 뽑아내야 할까?
이제 SHALLOW에서 DEEP으로 가보자!
Deep Learning은 말그대로 layer가 많아 깊은 모델을 뜻한다.
위의 "shallow" learning에서 뽑은 feature가 아닌 layer를 학습시켜 features를 뽑아낼 수 있다.
Layer를 통과한다는 것은 transformation을 한다는 것과 같은데
이미지를 넣으면 각 레이어를 통과하면서 transformation이 되고 일종의 feature들이 생겨나게 된다.
이러한 representation을 higher level representation이라고 칭하는데(이전에 나온 gradient를 일반적인 representation이라하고 상대적으로 이를 higher라고 칭한다.) 이 representation의 특징으로는
- More abstract
- More invariant to nuisances
- Easier for predicting label
이 있다. 첫번째 abstract이라고 하는 특징이 와닿는다. 왜냐하면 요즘 deep learning을 해석하려는 시도도 많고 그 분야도 따로 있지만 아직까지 각 layer를 통과하면서 생긴 features에 대한 설명이 그리 정확하지 않기 때문이다. 예를 들어, gradient과 같은 representation은 픽셀간의 차이를 계산한 명확한 과정이 있지만 deep learning은 그렇지 않다.
정리해서 말하자면,
Deep Learning은 learned representation을 위해 여러개의 layer를 사용한 machine learning의 한 분야이다.
Input으로부터 internal representation을 거쳐 output으로 가는 함수이다.
또한, 모든 layer에 대한 파라미터는 대개 accuracy와 같은 objective(ex. loss function)에 대해서 학습된다.
Part 3
What makes Deep Learning work?
1) Big models with many layers (=> Good Representation! )
2) Large datasets with many examples (ex. ImageNet)
많은 parameters를 학습하려면 많은 데이터가 필요하고 마찬가지로
또 많은 특징을 배우려면 많은 데이터가 필요하겠죠?
3) Enough compute to handle all this
=> 많은 parameters를 학습할 수 있을만한 컴퓨팅 머신이 필요하다.
Model scale : is more layers better?
1)과 관련해서 그러면 layers가 많을수록 더 성능이 좋을까? 라는 생각이 들 것이다.
아래의 예시를 보자.
위의 예시를 보면 성능이 좋은 모델이 layers도 더 많은 것을 볼 수 있다.
하지만 layers수가 무조건 많을 수록 좋은 건 아닌데 뒤에서 더 살펴볼 예정이다.
(하지만 요즘 언어모델에서의 parameter수는 정말 어마어마하다는.....어쩌만 언어모델에서는 파라미터가 많을수록 성능이 좋은 것이 정답일 수도 있겠다.)
How big are the datasets?
2)과 관련해서 얼마나 데이셋이 커야 훈련할만한 가치가 있을까? 특징을 모델이 잘 배울 수 있을까?
대표적으로 딥러닝 입문시 사용하는 데이터셋은 MNIST, CIFAR 10이 있다.
각각 몇만개의 이미지를 가진 매우 큰 데이터셋인데 2009년에 나온 ImageNet은 무려 1.5m개의 이미지를 가진다.
How does it scale with compute?
아래의 표에서 vision 분야 모델들의 대략적인 컴퓨팅에 대한 정보를 볼 수 있다.
위에서보면 정말 computing 시간과 장비에 대한 비용이 어마어마할 것 같은 기분이 든다.
정말 엄청나게 비쌀까?
누군가는 자원이 많이 들어 deep learning이 좋지않다고 하고(대표적으로 석사시절 지도교수님이 그랬다.)
어떤 누군가는 자원을 많이 투자할수록 성능이 좋아지니 좋다! 라고 할 것이다.
The underlying themes
>> Acquire representations
1. Automation : 어떤 feature가 좋은지 결정할 필요가 없다. 모델이 데이터로부터 배우기 때문이다.
2. Better performance : 인간보다 정확도가 높다.
>> Learning vs inductive bias("nature" vs "nurture")
1. inductive bias : 결국 딥러닝 모델도 디자인을 해야하기 때문에 bias가 생길 수 있다.
2. Should we build in knowledge or better machinery for learning and scale?
>> Algorithms that scale
모델이 데이터와 model capacity가 많고 좋을수록 알고리즘 러닝에 대한 성능이 좋아지는 것에 대한 내용이다.
Why do we call them neural nets?
그럼 우리는 왜 "신경"네트워크라고 부를까?
여기서 neuron은 우리가 학창시절에 배운 그 뉴런이다.
신호를 받고 신호를 내보낸다.
딥러닝 모델에서도 이전 뉴런에서 보낸 신호를 받고 연산 후 신호를 내보내기 때문에 neuron이라 이름이 지어졌다. 여기서 neuron의 연산은 얼마나 특정 신호를 강조할지와 같은 정보 transformation에 대한 맥락인데 여기서 activation function에 대한 소개가 나온다. 많이들 아는 ReLU, sigmoid와 같은 함수이다.
사실 우리 몸의 뉴런과 완전히 연결지어지지는 않는다.
그럼 우리 뇌랑 딥러닝은 무슨 관계가 있는걸까?
What does deep learning have to do with the brain?
이미지가 주어졌을 때 인간이나 동물은 특정한 orientation에 대한 정보가 뉴런에서 처리되고 어떠한 물체인지에 대한 결정을 내린다.
그럼 우리 뇌도 딥러닝을 하는 것일까?
아니면 어떤 충분히 강력한 러닝머신이 같은 solution을 내놓는 것일까?
아직 완전히 이에 대한 정보는 밝혀지지 않았지만,
개인적인 생각으로는 언어모델과 같은 경우에 파라미터가 많아질수록 훈련이 잘되는 것을 보고
우리뇌의 엄청난 양의 세포와 같은 맥락이지 않을까 싶기도 한다.
Lecture 1 끝.
포스팅 내 모든 이미지의 저작권은 해당 강의에 있습니다.
'개발 > UC Berkely CS182' 카테고리의 다른 글
[Lecture 5] Backpropagation (6) | 2021.04.18 |
---|---|
[Lecture 4] Optimization (2) | 2021.04.11 |
[Lecture 3] Error Analysis (2) | 2021.04.04 |
[Lecture 2] Machine Learning Basics (2) | 2021.03.28 |
[시작] Deep Learning: CS 182 Spring 2021 (0) | 2021.03.20 |
댓글