- 2020년 4월 12일 오후 10:40
- 조회수: 2597
REFERENCES
INFORMATION
- 2020년 4월 17일
- 오후 1시 ~
- 화상 프로그램 이용(Zoom)
TOPIC
OVERVIEW
*발표시작 10분 전에 링크 공유드리겠습니다
요약: 딥러닝은 현재 데이터 분석 분야에서 크게 각광받고 있는 방법론이며, 입문자부터 저명한 연구자까지 매우 널리 사용하고 있는 상황이다. 이러한 딥러닝의 중요한 특징 중 하나는 많은 수의 파라미터가 경사하강법(gradient descent) 방법을 통해 학습된다는 것이다. 경사하강법 은 강력한 최적화 방법론이지만 많은 수의 데이터와 반복적인 업데이트가 필요하다는 단점이 있다. 이러한 단점을 극복하기 위해 다양한 optimizer와 scheduler가 고안되어 효율적인 업데이트가 가능할 것으로 기대하였다. 하지만 여전히 많은 데이터와 업데이트가 필요하며 사용자가 직접 개입해야 한다는 단점이 있다. 이에 따라 optimizer를 모델로 직접 학습시켜 사용하는 방법론 생겨났고 이를 기점으로 새로운 학습 알고리즘이 다양하게 연구되고 있다. 본 세미나에서는 기초적인 딥러닝 optimizer 방법론부터 최근 활발하게 연구되는 meta learning 알고리즘까지 경사하강법을 이용한 최적화 관점에서 다루고자 한다.
발표자 후기
첫 화상 세미나를 진행하게 되어 생소하면서도 신기했다. 이번 세미나는 기존의 hand-designed optimizer(Adam 등)와는 달리 순환 신경망 모델(LSTM)을 optimizer로 사용하기 위해 학습을 시킨 시도였다. LSTM을 이용하여 딥러닝 모델의 parameters의 학습 과정을 학습하며 최종적으로는 gradient를 예측하였다. 특히 모든 parameters에 대해 같은 LSTM으로 학습하여 사용했으며 이 아이디어가 없었다면 좋은 성능을 내기가 어려웠을 것 같다. optimizer 관점에서 meta-learning을 생각하게 만들어 주는 논문이며 최근 인기있는 meta-learning 방법론들의 시초가 되었다. 아이디어 자체도 신선하면서 좋은 결과도 나타내주는 논문이었다. 이번 세미나는 어려운 논문보다는 motivation이 되는 논문을 선택하였는데 잘 설명했을지 조금 걱정이 된다. 질의응답을 통해 새로운 정보와 관점을 들을 수 있었으며 더 깊이 생각해보게 되는 계기가 되었다. 화상으로 소통을 하는 것이 조금 어색하긴 했지만 통화하는듯한 느낌이 들어 나쁘지 않았다. 또한 미국에서 프로그램에 참여하고 있던 민재도 화상으로나마 보게 되어 반가웠다.
청취자 후기
오늘 세미나는 "How to optimize neural networks using gradient descent"를 주제로 충협이가 진행했다. 근래 들었던 강의 중 가장 인상 깊었다. 인공신경망 학습을 위해 사용되는 전반적인 Optimization 기법과, Learning to learn이라는 개념을 소개해주었다. 학습을 위해 학습하자는 개념으로 가장 명확했던 설명은 "Optimizer를 학습하여 Gradient를 예측하자"는 것이다. 소개해준 논문에선 LSTM을 사용했고, 정확도도 뛰어났다. Deep learning의 장점 중 하나가 기존에 사람이 단계적으로 수행했던 feature extraction의 수고를 덜어주는 면이 있는데 Optimizer도 알아서 학습하게끔 접근한게 매우 신박하다. 이제 우리는 데이터에 모델 구조만 생각하면 되는 시대가 온 것 같다. 연구분야로도 흥미롭다 생각하고, 더 정확한 예측모델을 구축하기 위해 앞으로 LSTM Optimizer를 사용하여 비교해보는 실험이 하나 더 추가되었다.
금일 세미나는 “How to optimizer neural networks using gradient descent”라는 주제로 충협이가 발표했다. Gradient descent 기법은 딥러닝에서 모델을 학습하기 위한 방법론으로 최근까지도 다양한 기법들이 연구되고 있다. 이번 세미나에서는 현재까지 연구된 기법들과 주로 사용하는 기법들에 대한 예시를 보여주었고 특히 사용하는 데이터 특성에 따라 옵티마이저를 학습하는 모델 기반의 기법을 소개해주었다. 개인적으로 이미지, 텍스트 등의 데이터를 가지고 기존에 연구된 gradient descent 기법을 사용하여 학습할 때 데이터의 특성에 따라 옵티마이저를 튜닝하는 것이 굉장히 중요하다는 것을 다시 한 번 느끼고 있다. 다음에는 개인 연구를 진행할 때 모델 기반의 옵티마이저를 구현하여 모델의 파라미터를 최적화하도록 하는 것이 목표이고 이번 세미나는 누구에게나 연구에 있어서 한번 적용해볼 가치있는 발표였다고 생각한다.
금일 세미나는 "How to optimize neural networks using gradient descent"라는 주제로 충협이가 진행을 하였다. 세미나 내용의 핵심은 사람이 만들어 놓은 Optimizer와 LSTM 모델로 학습한 Optimizer에 대한 설명이었다. 나의 연구에서 Optimizer를 변경하며 여러 실험을 진행하면서, Optimizer에 대한 정리를 하고 싶었는데 금일 세미나에서 이를 다시 한번 정리 할 수 있어 좋았다. 그리고 Data-driven optimizer라는 단어를 처음 들어봤는데, 매우 인상적이었다. Data-driven optimizer를 구성하는 모형은 LSTM이고, LSTM은 순차 데이터에 많이 사용하는 모형이다. 해당 모형에 딥러닝 모형의 파라미터를 입력한다는 것 큰 충격이었다. 나의 연구를진행하면서 Adam optimizer와 AdamW optimizer의 일반화 성능에 대한 고민이 있었는데, 고민의 대한 답을 교수님과 동료 연구원들의 토의를 통해 조금은 답을 찾은 것 같다. 유익한 세미나를 준비해준 충협이에게 감사함을 표한다.
금일 세미나는 “How to optimizer neural networks using gradient descent” 주제로 충협이형이 발표를 진행해 주었다. 뉴럴네트워크에 사용되는 optimizer를 기존에 나와있는 방법론이 아닌 optimizer를 위한 또 다른 뉴럴네트워크를 사용하겟다는 접근방법이 개인적으로 신선했다. optimizer는 학습을 위해 사용되었던 것인데 학습을 이용해서 optimizer라는 접근이 재밌었다.
세미나의 앞부분을 기존에 잘알려진 Gradient Descent 알고리즘 설명을 들을 수 있어서 이후 LSTM을 이용한 optimizer 설명도 자연스럽게 이해할 수 있었다. 다만 궁금했던 점은 LSTM을 이용해서 optimizer를 만들어 학습하는 것에 있어 어떠한 부분에 초점을 두고 연구되었던 것인지 하는지 알고싶다. 기존에 알려진 SGD, Adam, Momentum 등 이러한 optimizer보다 최적해에 접근할 가능성이 더 높아지는지, 기존보다 수렴속도가 더 빨라지는지, 연산량이 많아지더라도 가져오게될 이점에 대한 부분에 알고싶다. 그리고 데이터에 따라 학습한 결과가 다를 것이기에 이후 개인적인 공부를 하면서 기존 optimizer들이 아닌 충협이 알려준 이론을 구현하여 결과 비교를 하면서 공부를 해야겠다는 생각이 들었다. 오늘 개인적으로 신선하고 재밌는 주제에 대해 설명을 해주신 충협이형에게 감사하다.
이번주 세미나는 충협이가 ‘How to optimize neural networks using gradient descent’라는 주제를 가지고 진행하였다. 현존하는 컴퓨팅 파워가 발전함에 따라서 딥러닝 발전하게 되었는데 딥러닝을 학습시킨다는 것은 optimizer가 optimization problem을 해결하는 것을 의미한다. 딥러닝이 발전함에 따라서 optimizer도 발전하게 되었는데 optimizer의 발전 과정은 어떤 부분을 수정 하느냐에 따라 여러가지가 존재한다. Gradient를 수정한 Momentum, Nag가 있고 Learning Rate를 수정한 Adagrad, RMSProp, AdaDelt가 있으며 이를 합친 Adam, Nadam등이 있다. 통상적으로 사람들이 Adam을 가장 많이 사용하지만 모든 데이터에 좋지는 않다. 이는 어떤 알고리즘을 쓰더라도 항상 최고의 성능을 보장하지 못한다는 것을 의미한다. 따라서 더 좋은 성능의 optimizer를 만들기 위해서 데이터에 적합한 optimizer를 LSTM모델로 만들어 학습을 시키자는 것이 이번 세미나의 핵심이다. LSTM모델은 순환 신경망 구조의 한 모델로써 데이터의 sequence를 반영함으로써 sequence가 길어지면서 발생하는 문제를 해결 할 수 있다. 이렇게 만들어진 optimizer는 모든 파라미터마다 각각 학습되는 다양한 패턴을 학습할 수 있음과 동시에 과거의 파라미터 각각의 정보를 알기 때문에 정확한 예측이 가능하다. 또한 파라미터 별 학습이기 때문에 hidden layer, units 등 모델 구조가 달라져도 사용이 가능하다는게 장점이다. 이번 세미나를 들으면서 그냥 남들이 사용하는 optimizer를 사용해 왔는데 앞으로는 optimizer를 사용할 때 그냥 사용하는 것이 아니라 어떤 데이터에 맞게 사용할지에 대해 생각해 보면서 적용해 보아야겠다는 생각을 했다. 이해가 쉽게 설명해준 충협이이게 감사한 마음을 전하고 싶다.
'How to optimize neural networks using gradient descent'라는 제목으로 오랜만에 세미나를 청취했다. Gradient descent는 뉴럴네트워크를 학습시키기 위해 가장 기본이 되는 방법으로, 학습데이터에 대해서 정의한 loss function을 최소화하는 파라미터를 구한다. 이때 gradient descent를 디자인하는데는 2가지 개념 '방향'과 'stepsize:거리'가 중요하게 작용을 한다. Loss를 최소화하는 올바른 방향으로 올바른 거리만큼 움직여야 좋은 minima에 안착하게 된다. 이러한 개념을 기반으로 개발된 optimizer가 많이들 알고 있는 SGD, Adagradm, RMSprop, Momentum, Adam 등이다. 하지만, 이 중에서 일반적으로 Adam을 가장 많이 사용하지만 데이터와 알고리즘의 종류에 따라 성능차이가 많이 날 때도 있다. 세미나에서는 데이터에 기반해서 optimizer를 학습하는 논문인 'Learning to learn by gradient descent by gradient descent'를 소개해주었는데 optimizer에서 정해주어야하는 방향과 거리를 학습하는 LSTM 모델을 따로 추가적으로 두어서 최종적으로는 optimizer가 학습시킨 모델(optimizee)의 성능이 좋아지도록 학습하는 방식이었다. 또한 수많은 파라미터를 최적화하는데 LSTM을 사용하는데에는 많은 계산량이 필요하기 때문에, 각 파라미터별로 학습을 순차적으로하는 coordinatewise optimize 방식을 사용하였다는 것도 인상적이었다. 어찌보면 연구 및 프로젝트를 하는데 있어서 무심히 지나칠 수도 있는 optimizer에 대해서 전체적으로 설명을 들을 수 있는 기회가 있어서 개인적으로 의미있는 시간이었다.
또한, 최근 코로나 때문에 화상세미나를 진행을 첫 타자로 하게되어서 헷갈리고 시행착오도 많았을텐데 깔끔하게 진행해준 발표자에게 감사하다. 오랜만에 세미나를 청취하면서 알았던 내용과 더불어 새로운 내용에 대해서 설명을 들을 수 있었다. 하지만 아무래도 화상으로 진행을 하다보니 질의응답과 같은 의사소통에 있어서 불편한 점이 있고 음질 때문에 이어폰을 장시간 사용하다보니 귀가 불편해서 빨리 오프라인으로 세미나를 할 수 있었으면 좋겠다.
오늘은 'Learning to learn by gradient descent by gradient descent'라는 논문을 주제로 세미나가 진행되었습니다. 세미나의 전반부에서는 SGD, Momentum, Adagrad, Adam과 같이 현재 딥러닝 모델들을 학습하기 위해 많이 사용되는 optimizer들의 기본 개념들이 소개됐습니다. 이후에는 기본적으로 가장 많이 사용되는 Adam이라는 optimizer가 항상 성능이 좋지 않다는 점을 지적하며 해당 논문을 소개했습니다. 논문의 기본 아이디어는 rule-based optimizer가 아닌 data를 통해 학습된 optimizer를 사용하자는 것이었습니다. 기존의 rule-based 방식의 optimizer는 parameter에 대한 gradient를 구한 후 일정한 step size에 따라 parameter의 업데이트가 이루어집니다. 하지만 모델을 통한 parameter의 업데이트는 gradient를 input으로 넣어 주었을 때 parameter를 업데이트할 정도를 output으로 하여 parameter의 업데이트가 진행됩니다. 논문에서는 optimizer의 모델로 LSTM을 사용했습니다. 실험에서는 LSTM optimizer를 사용했을 때 기존의 optimizer보다 더 좋은 성능을 보이고 빠르게 수렴한다는 것을 보여줍니다. 하지만 마지막에 형록이형이 언급했듯이 해당 방법론을 실질적으로 적용하는 데에는 몇 가지 제한점이 있을 것으로 생각되었습니다. 논문에서는 parameter 별로 학습이 이루어지고 다양한 parameter에 대해 학습이 이루어져서 모델의 구조가 달라져도 학습된 optimizer를 사용할 수 있다고 주장하고 있습니다. 하지만 실제로 논문에서 보인 실험 결과는 학습되는 모델의 activation function을 sigmoid에서 RELU로 교체했을 때 다른 optimizer들에 비해 성능이 떨어졌습니다. 또한 딥러닝 모델을 학습시키는 과정에 optimizer을 학습시키는 과정이 추가되어야 한다는 점에서 기존의 optimizer들보다 학습시키기 어렵지 않을까 하는 의문점이 들었습니다.
금일은 How to optimize neural networks using gradient descent 을 주제로 세미나가 진행되었다. 개인적으로 이번 세미나 주제는 생각하지 못했던 영역이라 신기했다. 딥러닝 모델을 만들고 학습할 때, 사용하는 Optimizer로 Adam이 항상 좋은지에 대한 의문으로 세미나는 시작되었다. 나 또한 딥러닝 모델을 디자인할 때, Optimizer는 Adam에서 크게 바꾸지 않고 다른 Hyper-parameter를 변경하면서 모델을 학습하고 최고 성능을 보이는 모델을 찾는데 초점을 두었다. Optimizer는 Adam을 사용했을 때 모델 성능이 가장 좋은 경우가 많았기 때문에 굳이 바꾸지 않았었다. 내 경험과 달리 여러 연구에서는 Adam Optimizer가 항상 좋은 성능을 보이는 것은 아니라고 말하고 있었다. 데이터에 따라 SGD, Momentum, RMSprop 등 다른 Optimizer를 사용했을 때 더 좋은 성능을 보이는 경우가 있기 때문이다. 그래서 데이터에 적합한 Optimizer 자체를 학습 하자는 것이 본 세미나의 핵심이었다. 딥러닝 모델 학습시 계산되는 parameter 값으로 LSTM 모델의 Input으로 사용해서 gradient를 업데이트하면서 가장 좋은 성능의 모델을 찾는 것이었다. 이번 세미나는 내가 가지고 있던 고정된 사고방식의 틀을 깨 준 좋은 세미나였다. 화상회의로 진행한 세미나가 처음이라 준비에 어려움이 많았음에도 사전 테스트 진행까지 하면서 좋은 세미나를 준비해준 충협이에게 감사함을 표한다.
금주 세미나는 충협이가 How to Optimize Neural Networks using Gradient Descent라는 주제로 발표하였다. 딥러닝 파라미터 학습시에 사용되는 optimizer에 대한 전반적인 내용과 함께 구글 딥마인드에서 발표한 Learning to Learn by Gradient Descent by Gradient Descent 논문 리뷰가 주된 내용이였다. 최적화 분야 연구자가 아닌 대부분의 데이터 분석가가 모델 학습시 의심없이 선택하는 Adam optimizer는 optimal step size update, momentum 컨셉을 적용한 최적화 알고리즘이다. 하지만 Adam 역시 항상 최적의 파라미터 학습을 보장하지는 못하기 때문에, optimizer 자체를 학습하자는 아이디어를 생각해볼 수 있고, 이를 LSTM 네트워크로 구현한 방법이 구글 딥마인드의 논문이였다. Gradient는 step별로 계산이 되는 고차원 데이터이기 때문에 순차적 데이터에 대한 학습이 가능한 LSTM은 가장 적합한 네트워크였고, 이런 아이디어를 생각하고 적합한 방법론을 고안해냈다는게 역시 구글은 다르다라는 생각을 했다. LSTM으로 학습시킨 optimizer을 적용한 DNN은 다른 네트워크보다 학습 속도도 빠르고 높은 성능을 내었다고 논문은 설명하고 있다. 딥러닝 모델을 구축할 때 아무 의심없이 RMSprop과 Adam만 사용했던 자신을 반성하게 하는 좋은 세미나였다.
금일 진행한 세미나에서는 충협오빠가 ‘How to optimize neural networks using gradient descent'라는 주제로 진행하였다. Gradient descent는 딥러닝 알고리즘을 학습시키기 위해 사용되는 가장 기본적인 최적화 방법이다. Gradient descent의 최적화 과정에서는 minimum값에 도달하기 위한 방향(gradient)과, 보폭(step size)가 주요하다. 이러한 특징을 기반으로 고안된 optimizer는 모델 학습이 더욱 원활하게 되는 것을 목표로 한다. 대표적으로 local optimal, saddle point로부터 벗어날 수 있도록 고안된 momentum, gradient값에 가변적인 step size를 반영하기위해 adaptive step size를 적용시킨 Adagrad, 현시점에 대해 가중을 적용한 RMSprop, 그리고 기존의 여러 optimizer의 장점을 조합한 Adam이 주로 사용되어온 optimizer이다. 이렇듯 Optimizer의 종류는 많고, 특징도 각 다르다는 것을 알 수 있으며, 데이터의 특징과 모델의 capacity에 따라 성능차이가 크게 발생하는 경우가 있다. 이러한 한계점을 극복하기 위해 금일 소개한 논문에서는 optimizer를 예측모델로 전환함으로써 학습의 대상으로 취급한다. 해당 모델은 현 시점에서의 parameter를 입력으로 사용하고 gradient를 예측하는 하는 구조이며, optimizer를 사용한 모델의 성능이 좋아지는 것을 목표로 한다. Optimizer는 딥러닝 연구에 필수적인 요소임에도 불구하고, 개인적으로 optimizer에 대해 평소에 제대로 이해하고, 이를 개선 시키고자 하는 시도에 대해 크게 중점을 두지 못했던 것 같다. 금일 세미나를 통해 흔히 사용하는 optimizer에 대한 설명부터, 이를 예측 알고리즘으로 전환하여 개선하고자 하는 연구를 접할 수 있어서 흥미로웠다. 처음 화상회의를 진행하느라 정신없었을텐데 끝까지 세미나를 잘 이끌어준 충협오빠에게 감사하다.
아직 실무적인 프로젝트에 참여해본적이 없어서 지식이 박하지만, 일반적인 toy problem classification 문제에서 optimizer를 항상 Adam을 썼었다. RMSPROP과 Momentum 두 개를 합친것이니 그냥 좋으니까 썼었다. 이보다 좋은 optimizer가 나온다면 어떤 아키텍처를 가지고 만들까가 궁금했었다.
meta -learning은 정해진 틀(design)에 하이퍼 파라미터를 수정하는 것이 아니라, data로부터 유도된, 그 data에 적합한 optimizer를 만들어보자는 생각이 주된 토픽인 것 같다. 직접 구현을 해보진 않았기 때문에, 어떤식으로 알고리즘이 작동하는지 완벽히 이해할 수는 없었다. 그리고 optimizer 마저 LSTM으로 학습시키면 학습시간이 더 오래 걸리는 것이 당연할텐데, 기존에 있는 optimizer를 써서 시간이 덜 걸리는 것 vs Meta_learning을 써서 성능을 좀 더 높이는 것 사이의 trade-off도 고려해볼 만한 문제인 것 같다.
딥러닝을 떠나 요즘 세상의 트렌드가 초개인화(김난도,트렌드코리아 2020, 미래의창-제품을 소비자가 맞추는 것이 아니라 개별 소비자에 맞는 제품이나 서비스를 지향)인데, data를 optimizer에 끼워맞추는 것이 아니라 optimizer를 data에 적응시키는 추세도 같은 맥락에서 이해할 수 있을 것 같다.
온라인 세미나는 처음이라 진행이 어려웠을텐데 고생하신 충협이형께 감사의 말씀을 드린다.
오늘 충협이는 인공신경망의 파라미터를 학습시키는 최적화 방식에 대한 기초 Stochastic gradient descent (SGD) optimizer부터 최근 data-driven 방식으로 gradient 업데이트 방식을 gradient descent로 학습하는 모델까지 설명해주었다(말장난 같다ㅎㅎ). 다양한 연구실 청자의 수준을 고려해서 쉬운 용어로 설명하기 위해 많은 노력을 한 것이 느껴졌다. 충협이의 세미나에서는 다른 연구원들의 세미나에 비해 자신의 생각을 얘기하는 부분이 많다. 예로 들어 ‘이 부분은 제 생각에는 저자가 이것을 위해 했다고 생각한다.’라는 식의 해석을 해주는 것이 굉장히 좋았다. 처음 zoom으로 하는 세미나라서 준비해야하는 것도 많고 번거로웠을텐대 투덜투덜하면서도 매번 잘 마무리하는 충협이에게 많은 것을 배운다. 파이팅~~
이번주 세미나는 "How to optimize neural networks using gradient descent" 을 주제로 세미나가 진행되었다. 딥러닝 학습에서 파라미터 학습시 사용되는 Optimizer에대한 세미나인데 기존에 Optimizer 는 누구나 사용하고 있는 Adam을 무의식적으로 써왔던 나로써는 Adam도 항상 좋은 결과를 보여주지는 않는다는 당연한 사실에서 여러가지 바꿔야 하는 하이퍼 파라미터 중 Optimizer도 바꾸어 봐야 한다는 사실을 깨닫게 되었다. 또한 Adam 이 어떻게 나오게 되었는지 Gradient를 수정하고 Learning rate를 수정하고 이를 모두 적용하여 나온 Optimizer 라는 것을 알게 되었다. 이번 세미나는 더 좋은 성능의 Optimizer를 만들기 위하여 데이터에 적합한 LSTM모델로 optimizer를 만들어 학습하는 방법에 대해 설명을 해 주었다. Model-based optimizer 로 Data별로 적합한 Optimizer를 찾고 비슷한 데이터로 Optimizer를 학습시켜 이용하면 더 좋은 학습이 가능하다는 이론으로 장점으로는 모든 파라미터마다 각각 학습되는 다양한 패턴을 학습 할 수 있음과 동시에 과거의 파라미터 정보도 알기에(Momentum, Adam과 같은원리로) 정확한 예측이 가능하다. 또한 parameter별 학습이기 때문에 Hidden layer, units등 모델구조가 바뀌어도 사용이 가능하다. 특이한점은 Sigmoid에서 ReLU로 변환을 해주면 학습이 안되는 현상을 볼수 있었는데 이를 통해 모든것에 완벽한 모델은 없고 많은것을 해봐야 한다는 생각을 하게 되었다. 오랜만에 시작한 세미나인데 잘 알려주어서 고마운 세미나였다.
오늘은 "How to optimize neural networks using gradient descent" 라는 주제로 목충엽 연구원이 세미나를 했습니다.
딥러닝 학습에 있어서 널리 쓰이고 있는 파라미터 최적화 방법인 SGD, Momentum, Adagrad, RMSProp, Adam 에 대한 설명과 이러한 방법들의 한계점에 대해서 얘기를 했습니다. 그리고 이를 극복하기 위한 연구인 LSTM을 활용한 optimizer를 소개했습니다.
기존의 optimizer는 룰 기반으로 하이퍼파라미터 조정을 통해서 결과가 달라지기 때문에 시행착오를 겪는 부분이 많은데, 이러한 모델 기반 optimizer는 데이터를 기반으로 학습하여 능동적으로 상황에 맞춰 대응한다는 점이 인상 깊었습니다.
처음 딥러닝 학습을 접할 때 optimizer에 대해 검색을 해봤는데, optimizer 성능 비교표에서 제일 우수한 것으로 나오는 Adam를 주로 사용해왔기에 이에 대한 한계점에 대한 생각은 못해봤는데, 이번 주제는 매우 흥미로웠습니다. 오늘 세미나 내용을 통해 정확히 어느 시점에 어떤 방식으로 optimizer를 학습하는지에 대한 의문은 남았지만 개인적인 과제로 남겨놓는 것으로 하고... 흥미로운 주제를 준비하고 처음 접하는 세미나 환경에서 노력한 목충엽 멘토에게 감사의 인사를 드립니다.
금일 세미나는 "How to optimize neural networks using gradient descent" 라는 주제였다. 처음 세미나 제목을 봤을때는 최근 뉴럴네트워크 강의에서 gradient descent 에 대해 배웠으니 잘 이해할 수 있겠다고 생각하였다. 하지만 역시 내가 이해하기에는 쉽지 않은 내용이었다. optimization problem 을 해결하는 방법으로 관성을 이용한 방향수정과 stepsize 수정하는 두 방법을 차근차근 설명해 주어 기존에 잘 이해가 되지 않던 부분이 해소 되었다. Adam 이라는 Optimizer 에 대해서도 알 수 있었는데 많은 사람들이 좋다고 무의식적으로 사용했지만 항상 좋지만은 않다는 것을 비쥬얼하게 보여주어 좋았다. Learning to Learn 에 대해서는 처음 알았는데 학습을 위한 학습이라니 재미있는 표현이었다. 충협씨가 온라인으로 세미나를 진행한 첫 타자여서 시행착오도 있고 긴장도 했을텐데 차분히 잘 설명해주어 감사함을 전하고 싶다.
How to optimize neural networks using gradient descent 를 주제로 금일 목충협 연구원이 세미나를 진행했다.
미리 보내준 자료를 볼 때부터, 최근에 공부한 내용과 관련된 것들이라서 관심을 가지고 들어야 겠다는 생각이 들었다.
년초부터 코로나19로 인해 오프라인 모임이나 수업 자체가 모두 연기가 되는 바람에 한동안 DMQA 세미나로 진행을 못 하고 있었는데, ZOOM이라는 화상플랫폼을 통해서 이번에는 첫 온라인 세미나로 진행하게 되었다.
처음 온라인으로 세미나를 진행하다보니 이색적인 부분들이 사전에 ZOOM 프로그램을 설치를 하고 환경설정을 끝낸 뒤 접속을 하니, 미리부터 접속한 연구원들이 다양한 표정의 모습들을 보여주었고, 모든 참여자들의 상황을 실시간으로 확인할 수 도 있고 질문도 가능했다.
세미나 내용은 일반적으로 알고 있는 사람이 직접 지정해 주어야 하는 Optimizer 모델에 대한 설명과 함께 최근에 나온 Learning to learn 이라는 Optimizer 모델인 LSTM 을 활용한 Optimizer 에 대한 내용이었다.
늘 AI로 문제를 해결할 때 SGD, Momentum, Adam 등 어떤 Optimizer를 쓸 지 고민 되는 경우가 많은데, LSTM은 지금까지 고민하던 문제를 한 번에 해결해 줄 수 있는 모델이었다. 물론 아직은 연구 단계여서인지 Train SET 에 대한 현황만을 결과로 보여줘서 실제 현상이나 Test SET 에 대한 부분의 검증이 끝나야 사용하겠지만, Train SET 의 경우로 보여진 예제에서는 어떤 모델보다도 성능적으로 뛰어나다는 것을 보여주었다.
하루가 다르게 발전하는 AI 분야에서 하이퍼파라미터와도 같은 Optimizer 선택에 있어서도 뭔가 획기적으로 AI 화 할 수 있는 연구주제를 접할 수 있어서 시야를 확대할 수 있는 좋은 기회였다.
향후에 Train SET 이외에도 의미있는 결과를 도출했다는 소식을 접할 수 있을 거라는 기대를 가지며, 처음으로 진행된 온라인 세미나를 훌륭하게 끝마친 목충협 연구원에게 감사의 말을 전한다.
금일 세미나는 "How to optimize neural networks using gradient descent" 라는 주제로 목충협멘토님께서 진행해주셨다. 딥러닝 개념부터 시작해서 전반적인 Optimization 기법과 SGD, Adagrad, Adam 등의 Hand-designed optimizer 와 Model-based optimizer의 비교까지 이해를 도와주는 스토리로 풀어내주셨다. 주된 내용은 Data에 적합한 optimizer를 만들어 사용하자는 것이었는데 소개해주신 모델은 LSTM모델이었다.
Quadratics, MNIST 데이터 셋에 대해 각 Optimizer로 실험한 결과를 보여주셨는데 제안해주신 LSTM 기반의 optimizer가 기존의 hand-designed된 optimizer보다 더 성능이 좋았음을 확인할 수 있었다. CIFAR-10, CIFAR-5, CIFAR-2 데이터 셋에 대해 실험을 진행했을 때도 마찬가지로, 제안된 LSTM 방법이 기존 방법보다 더 나은 성능을 보였으며, LSTM-sub이 CIFAR-2에서는 가장 좋은 성능을 보였다. 해당 그래프들을 통해 기존의 optimizer들과 비교함으로써, 더 나은 learning algorithm이라는 것을 확인해볼 수 있었다.
스탠포드 강의(231n)를 통해 배웠던 optimizer에 대한 설명보다 멘토님께서 설명해주신 것이 나에게는 더 잘 와닿았던 것 같다. 여기 계신 연구원님들 대부분이 바쁘시겠지만 그런 와중에도 이렇게 좋은 주제로 유익한 발표를 마쳐주신 목충협 멘토님께 감사의 말씀 전하고싶다. 그리고 Zoom으로 처음 시도한 세미나였는데 중간중간 끊길 때도 있어서 당황스러우셨을 수 있었지만 끝까지 잘 마쳐주셔서 고생하셨다고도 말씀드리고싶다.
오늘 세미나는 “How to optimize neural networks using gradient descent”을 주제로 진행하였다. 딥러닝에서는 Optimizer를 바탕으로 Gradient Descent를 이용하여 많은 가중치들을 한번에 학습하게 된다. 이때 활용되는 방식으로는 Momentum, Adagrad, Adam 등 다양한 방식이 존재한다. 하지만 어떠한 알고리즘을 쓰더라도 최고의 성능을 보장하지 못한다는 생각에서, 각 데이터에 적합한 optimizer를 만들어 학습시키는 알고리즘이 나오게 되었다. 이는 시계열 데이터를 기반으로 한 gradient값들을 input으로 넣을 때 LSTM 모델을 바탕으로 새로운 gradient 계산에 활용할 output을 출력하는 방식이다. 이러한 LSTM optimizer는 모델 성능의 기대값을 향상시키는 방향으로 학습하게 되며, 과거의 parameter 정보를 알고 있기 때문에 정확한 예측이 가능하다. 이번 세미나를 통하여 알게 된 LSTM optimizer를 실제 데이터에 적용시켜보면 학습 속도는 느려지더라도 다른 gradient descent 방식들과 비교했을 때 얼마나 개선되는지 확인하고 싶다는 생각이 들었다. 전체적으로 gradient descent와 optimizer에 대한 이론을 다시 공부하고 정리하는 의미있는 시간이었다.
"How to optimize neural networks using gradiend descent"라는 주제로 목충협연구원이 발표하였다. Gradient descent는 Neural Network에서 정확한 parameter를 찾기 위해 사용하는 방법이다. 무작위로 찾는 것이 아니라 목표값에 도달하기 위하여 조금씩 원하는 방향으로 변화를 주는 방법이다. 어느 방향(plus, minus)으로 parameter를 변경해야하는지, 얼만큼 변경해야하는지를 결정하는 다양한 optimizer가 기존에 존재하고 있다. SDG, Momentum, Adagrad, RMSProp, Adam 이라는 대표적인 optimizer에 대한 설명을 들었고 당연하게 써오던 Adam이 최고의 기법이 아니며 데이터에 따라 다를 수 있다는 것에 대한 실험결과를 볼 수 있었다. 모두 산술적으로 계산하던 Optimizer의 기존 틀에서 벗어나 Gradient를 LSTM으로 학습하는 방법에 대한 세미나였다. 학습을 하기 위한 학습이라는 평소 예상하지 못하던 방법이 다른 네트워크보다 좋은 성능을 내는 것을 보며 너무나 당연하게 써오던 많은 방법론들을 새롭고 더 좋게 만들 수 있다는 가능성을 보여주었다.
학교에 항상 있지 못하는 나로서는 온라인세미나가 너무나도 반가왔고 환경이 허락한다면 오프라인과 온라인이 항상 병행되었으면 하는 바램이 생겼다.
Neural network 학습은 정의된 network와 학습 데이터에 대해 loss function을 최소화하는 최적화 문제로 정의된다. 이 최적화 문제를 푸는 데는 대부분의 경우 stochastic gradient descent (SGD)가 사용한다. 하지만 최적화 문제는 비선형성을 띄기 때문에 SGD를 사용할 경우, local minima 또는 saddle point에 해당하는 해를 얻을 가능성이 높으며, neural network의 전반적인 성능 저하로 이어지는 경우가 많다. 이런 local minima 문제를 해결하고, 학습 속도를 높이기 위해서 Adagrad, RMSProp, Adam 등의 다양한 SGD variant들이 제안되어 왔다. 이런 optimizer들은 gradient를 기반으로 momentum을 계산하거나 variable 별로 step size를 조정하는 등의 rule을 추가하여 성능 개선을 시도했다. 하지만 여전히 모든 상황에서 잘 작동하는 optimizer는 존재하지 않는다. 이번 세미나에서는 데이터를 기반으로 좋은 optimizer를 만들어보려는 노력에 대해서 다루었다. 세미나에서 다룬 learn to learn에서는 현재 상태에서 gradient를 입력 값으로, 실제로 파라미터의 변화량을 출력 값으로 하는 모델을 만들었다. 기존의 momentum이나 adaptive step size가 일종의 rule-based 방식이라면, learn to learn은 data-driven 방식이라고 볼 수 있는 것이다. 논문에서는 순차적으로 진행되는 SGD optimization을 잘 반영하기 위해 LSTM을 사용하였다. 데이터를 기반으로 gradient를 보정한다는 점에서 상당히 흥미로운 주제라고 생각한다. 하지만 논문에 제시된 결과로는 다양한 상황에서 일반적으로 사용하는 데는 어려움이 있을 것 같다. 발표된지 시간이 꽤 지난 논문이기 때문에, 관련 연구가 최근에 어느정도까지 진행되었는지 파악해보면 좋을 것 같다.
금일 세미나 주제는 'How to optimize neural networks using gradient descent'로 충협 선배님이 진행 해주셨다. 딥러닝 등장 배경과 뛰어난 성능을 갖는 이유를 설명하시고, 이것을 최적화 중요성과 연관 지으며 발표가 시작되었다. 인공신경망 최적화는 Gradient 기반 알고리즘으로 진행되고, 이 과정에서 Step size와 Gradient 중요성에 대해 들을 수 있었다. 핵심은 효과적인 Step size, Gradient을 기반으로 최적화를 진행해야 Local optimal, saddle point 등의 문제점을 벗어날 수 있다는 것으로, 이를 위한 Momentum, Adaptive step size 아이디어를 적용한 여러 최적화 알고리즘을 설명하셨다. 하지만 무슨 알고리즘을 사용하든지 간에, 항상 최고의 성능을 보여주지 못함을 언급하시고, 다음 주제인 메타러닝에 대해 설명하셨다. 데이터에 적합한 optimizer를 학습시켜 사용하는 것이 메타러닝의 핵심이였고, LSTM optimizer에 대해 설명하셨다. 인공신경망 파라미터 업데이트 과정이 순차적으로 이어지는 점과, 데이터의 순차적 정보를 반영하여 학습하는 LSTM을 결합한 점이 인상적이였다. LSTM optimizer 학습 과정에서 학습 트릭인 Parameter sharing과 그 결과가 인상 깊었다. 최적화에 새로운 관점을 소개시켜주시고, 깔끔한 발표 자료와 줌을 통해 첫 세미나를 해주신 충협 선배에게 감사드립니다.
이번주 세미나는 "How to optimize neural networks using gradient descent" 주제로 진행되었다. 현재 딥러닝을 학습시키기 위해 다양한 Optimizer들이 사용된다. local minimum을 벗어날 수 없는 SGD의 단점을 보완하여 momentum이라는 관성을 더해주는 방향으로 해결했고, 각각의 파라미터 마다 learning rate를 다르게 적용해야 한다는 점을 보완하여 AdaGrad로 발전되었다. 이 두가지 장점을 합친 Adam이 지금까지 가장 널리 쓰이는 Optimizer이다. 이번 세미나에서는 논문 'Learning to learn by gradient descent by gradient descent'을 소개해주셨다.
앞에 설명한 Hand-designed Optimizer가 아닌 Mobel-based Optimizer이다. Optimizer에서 방향과 거리를 학습하는 LSTM 모델의 학습을 통해 최종적으로는 Optimizer가 학습시킨 모델의 성능이 좋아지도록 학습이 된다. 기존의 Optimizer에 대한 개념부터 데이터에 걸맞는 새로운 알고리즘도 배울 수 있는 유익한 시간이었다. 첫 온라인 세미나임에도 완벽하게 좋은 세미나 내용을 전달해주신 충협오빠게 감사함을 전하고 싶다.
오늘 세미나는 Deep Learning 알고리즘의 최적화 방법인 “How to optimize neural networks using gradient descent“라는 주제로 목충협 연구원이 진행해주었다. 코로나-19 관계로 처음 시도되는 화상 세미나였지만 준비를 잘해서 무리없이 잘 진행되는 모습에서 여러가지로 준비를 많이 했겠다는 생각을 했다. 인공신경망 학습은 주어진 X를 Y로 매칭하기 위해 신경망 안의 node를 최적화 하는 방법으로 이루어지며, 이때 Loss를 줄이는 방법으로 이용되는 것이 Gradient descent이다. Gradient descent의 개념에 대해서는 대략적으로 알고 있었고, 해당 하는 Optimizer에 SGD, Adam 등 여러가지가 있다고 듣고 있었지만 이를 공부해야겠다고 생각해 본적은 없는 것 같다.
인터넷에서 찾아보는 연구 Code에서도 항상 Adam을 사용하고 있으며 주위에서도 잘 모르면 Adam을 사용하면 하는 것이 좋다고 듣고 있었기 때문이다. 하지만 오늘의 Optimizer에 대해 세미나는 꾀나 흥미로웠다. 인공신경망을 학습하기 위해 Gradient는 순차적으로 계산이 되는데 이를 RNN에서 활용되는 LSTM을 활용하여 학습시키면 학습하는 data에 최적화 된 Optimize로 학습시킬 수 있다는 것이 세미나의 핵심 아이디어였다. 모든 지금까지 인공신경망 성능을 개선하기 위해 Hyper-parameter 수정 및 신경망 구조 변경만을 생각하고 있었던 나에게 인공지능의 연구 분야가 더 넓고 광대함을 보여준 세미나였다. 연구실의 연구 관점을 넓혀준 독창적인 세미나를 진행해 준 목충협 연구원님께 감사하다는 말을 전하고 싶다.
1. 모델은 한 개 이상의 파라미터를 가지고 있고 이 파라미터들은 학습 데이터 (샘플)에 의해 추정된다.
2. 통계학에서는 오래 전부터 파라미터를 추정하는 방법론 (estimation)에 대해 많은 연구를 진행하였다.
3. 머신러닝에서도 "학습"이라는 이름으로 파라미터를 추정한다.
4. 딥 뉴럴네트워크의 경우 파라미터의 수가 엄청나게 많다 (수십만개는 보통).
5. 파라미터를 추정하는 (혹은 학습하는) 방법 중 대표적인 것이 Gradient Decent 방법론이다.
6. 오늘 충협이 세미나에서는 Gradient Decent를 비롯하여 최근 많이 사용되고 있는 Adam (Adaptive Moment)까지 설명하고, 모델로 파라미터를 추정하는 최근 연구를 소개하였다.
7. 오히려 Gradient Decent 방법론에 대해 수학적인 이론까지 덧 붙여 자세히 설명했으면 더 좋았을 거라는 아쉬움이 있다.
8. 첫번째 온라인 세미나를 훌륭하게 진행해준 충협에게 박수를 보낸다.
신경망 학습 시 결정해야 하는 가장 중요한 하이퍼파라미터를 꼽자면 학습율(learning rate)이라고 생각한다. 조금 더 자세히 얘기하자면 역전파(backpropagation)을 통해 얻은 그레디언트(gradient) 값으로 얼마만큼 또 어떻게 업데이트하냐에 따라 동일한 신경망 구조를 가지더라도 그 성능은 천차만별인 경우가 빈번하다. 일반적으로 adaptive gradient 방식의 업데이트를 수행하는 Adam이 빠른 속도로 적당히 높은 성능을 가져오지만 경우에 따라 좋지 않은 local optima로 수렴하여 일반화 성능이 떨어지는 경우가 많다. 실제로 컴퓨터 비젼 연구에서 CNN 구조를 학습할 땐 Adam보단 가장 기본적인 stochastic gradient descent에 높은 momentum을 주는 것이 더 좋은 결과를 가져오는 경우가 많다. 반면 자연어 처리 연구에서 RNN 구조를 학습할 때는 RMSProp이 가장 잘 작동하기도 한다. 이처럼 No free lunch theorem은 신경망의 학습 알고리즘에도 적용된다.
오늘 세미나에서 다룬 메인 논문은 '신경망을 학습하는 알고리즘마저도 학습해버리면 어떨까?'라는 아이디어에서 출발한 'Learning to learn by gradient descent by gradient descent'이다. 2016년에 발표되었을 때 작명 센스가 돋보여서 아직까지도 기억에 남아있다. 학습하고자 하는 모델(Optimizee)의 역전파를 통해 계산한 그레디언트 값을 입력으로 받아 학습율을 출력하는 LSTM 모델(Optimizer)로 학습 알고리즘을 대체한다. 제시된 실험 결과들을 보면 Adam, SGD, NAG, RMSProp보다 빠른 수렴 속도를 보이는 것을 확인할 수 있다. 하지만 실험에서는 DNN을 이용한 MNIST 분류 문제 혹은 많은 업데이트를 필요로 하지 않는 Neural Style Transfer 문제에 대한 적용 결과만 보여주어 일반적으로 사용할 수 있는 학습 알고리즘인지는 의구심이 든다. 후속 연구들이 존재할테니 만약 실적용을 바란다면 반드시 확인할 필요가 있어보인다.
목충협 연구원이 진행한 How to optimize neural networks using gradient descent를 들었습니다. 딥러닝의 핵심인 Neural Network에서는 올바른 알고리즘과 방법론으로 접근하는것 뿐만이 아닌 적절한 Optimizer를 찾아 학습 효율을 최적화 하는 것도 중요합니다. Neural Network의 Optimizer는 SGD부터 시작하여 Momentum, Adagrad, RMSProp, Adam 등으로 발전했으며, 최근의 Optimizer는 가장 무난하면서 좋은 효율을 보이는 Adam을 주로 사용한다고 cs231n의 Optimizer 관련 강의에서 언급되었습니다. 하지만 실제로 Adam은 모든 Case에서 뛰어난 만능 Optimizer라고 하기엔 항상 좋은 결과를 내 주는 것이 아니기에, Optimizer 사용에 대한 Question은 항상 있어왔고, 이를 해결하기 위해 Optimizer 자체도 학습으로 해결하는 Learning to learn by gradient descent by gradient descent를 소개했습니다. 이는 LSTM 구조를 활용하여 Model기반으로 Optimizer를 찾는 방법으로, 실제로 예제 학습에서 Adam보다 훨씬 좋은 성능을 보여주었습니다. 다만 제 입장에서는 아직 LSTM에 대한 정확한 이해도가 부족하여, 향후 Adam Optimizer를 맹목적으로 사용했었던 많은 산출물들에 해당 Model Based Optimizer를 활용하면 성능 개선을 노려볼 수 있지 않을까 생각해 보았던 뜻깊은 내용이였습니다.
수 많은 파라메터를 최적화해야 하는 딥러닝 모델에서 글로벌 옵티멈에 근사하는 파라메터를 찾는것은 항상 어려운 문제였다. 딥러닝을 연구하는 입장에서 그동안은 이러한 문제에 대해 깊은 고민을 하지 않고 그저 경험적으로 좋게 느껴지는 방식을 습관적으로 이용해왔다. 그런 나에게 어떤 룰 기반 옵티마이저도 항상 좋지 못하다는 점과 이를 보안하기 위한 모델 기반 옵티마이저의 장점에 대한 이번 세미나는 좁아진 시야를 넓혀주는 좋은 발표였다. 모델 기반 옵티마이저에는 특히 신선하게 다가왔는데, 비슷한 데이터로부터 옵티마이저 자체를 학습시키는 측면에서 메타학습 또는 전이학습의 범주에 속하는 듯 했다. LSTM 모델을 기반으로 매 스텝 최적의 파라메터 업데이트를 수행하는 것은 실제로 얼마나 뛰어난 성능을 보이는지 실험해 보고 싶었다. 옵티마이저를 프리트레인 시켜야 하는 만큼 최초 훈련시엔 시간이 많이 소요될 것이지만 비슷한 데이터를 다루는 딥러닝 모델을 여러번 만들거나 지속적으로 업데이트 할 때 본 방법론이 매우 유용하게 쓰일 수 있을 것이라 생각했다. 처음 진행된 화상회의에서 성공적으로 발표를 마친 충협이에게 감사한다.
매일 행아웃으론 경험이 많으나 줌으로는 처음이었고 다수의 인원이었지만 매끄럽게 진행된 세미나였다. 이번 세미나는 옵티마이저가 어떤 정해진 파라메터로 셋팅되어 돌아가는 로직이었다면 이마저도 학습해야할 대상으로 확장할 수 있다라는 생각의 틀을 깰 수 있는 좋은 시간이었다. 기존의 옵티마이저를 Momentum과 그리고 AdaGrad를 거쳐서 두개의 보완점을 합친 Adam이 가장 널리 쓰이는 와중에 더 발전된 옵티마이저의 시작이지 될수도 있지않을까 생각을 해본다. 주제는 이 옵타마이저가 학습할 모델이고 순환 신경망 모델들을 이용하여 학습을 시킨다는 아이디어였다. 그 중 LSTM을 이용 딥러닝 모델의 parameters들이 학습되면서 모델 자체가 gradient를 예측을 한다. 이주제는 강화학습을 이용하여 성능이 보완될 수 있겠다 생각이 들었다. 그리고 학습을 사전에 먼저 일정량의 데이터셋을 가지고 학습해야 하는 단점은 있으나 이 부분또한 성능이 좋다면 당연히 타협할 부분이 있어 보인다 생각이 들었으며 충협이에게 신선한 발표와 쉬운 설명에 감사드립니다.
금일 세미나는 목충협 연구원께서 ‘How to optimize neural networks using gradient descent'라는 주제로 화상 프로그램 zoom을 통해 진행해주었습니다. 최근 딥러닝 분야가 크게 떠오르면서 많은 사람들이 딥러닝 학습 방법을 선호하게 되었습니다. 이러한 딥러닝 학습 방법에서 가장 중요한 부분 중에 하나가 바로 최적화 기법입니다. 여기서 최적화라는 것은 내가 학습중인 파라미터가 모델의 성능이 최고가 되도록 만들어주는 것을 의미합니다. Gradient descent 기법은 최적화 방법 중에서도 가장 널리 사용되는 것인데, 이번 주제에서 이 최적화 방법을 기반으로 한 새로운 방법론을 제안하고 설명합니다.
일반적으로 최적화를 진행할 때 gradient와 step size가 중요하다고 말할 수 있는데, 이러한 특징을 잘 반영하여 만들어진 것이 기존의 optimizer입니다. 몇 가지를 설명하자면, momentum방식은 local optima나 안장점에 갇히지 않게 관성을 이용해 사용하는 방법이고 Adagrad는 adaptiave step size를 적용한 방법, RMSprop은 현재에 대해 더 중요하게 생각하는 방법 그리고 마지막으로 이러한 optimizer들의 좋은 점을 결합하여 만든 Adam이 있습니다. 딥러닝 모델을 학습할 때 절대적으로 좋은 optimizer는 없고 데이터나 모델의 구조에 따라 선택적으로 우수한 성능을 보입니다.
이번에 소개된 논문에서 제안된 방법론은 기존의 만들어진 optimizer를 사용하지 않고, 각 데이터에 맞게 optimizer자체를 학습하여 사용하자는 것입니다. LSTM을 통해 연속적인 데이터를 입력값으로 하여 직접 optimizer를 학습시키면서 이 optimizer를 가지고 나중에 gradient를 이용한 최적화를 진행하는 형식입니다. 항상 optimizer를 선택하고 사용하는 입장이었지, 원리에 대해 깊게 생각해보거나 한 적이 없었던 것이 사실입니다. 이번 세미나를 통해 딥러닝을 연구하는 사람으로서 좋은 내용을 알게되어 기쁩니다. 훌륭한 세미나를 진행해준 목충협 연구원에게 감사의 인사를 전하며 짧은 후기 마무리 하겠습니다.
이번 세미나는 "How to optimize neural networks using gradient descent"라는 주제로 진행되었다. 딥러닝에 대한 소개부터 시작한 덕분에 왜 Optimization 문제를 푸는 것이 필요한지를 알 수 있었다. Optimization은 결국 손실함수를 가장 최소화할 수 있는 파라미터를 찾는 것인데 이를 위한 다양한 Gradient Descent 방법이 존재한다. 단순히 이전 시점보다 작은 손실함수 값을 찾아가는 SGD 이외에도 여기에 관성 개념을 적용하여 Local Optimal을 피해가는 Momentum, 좀 더 정확한 방향까지 계산하는 Nesterov Momentum, 더 좋은 stepsize를 찾는 Adagrad RMSProp과 다양한 Optimizer의 장점을 모아 만든 Adam까지 다양한 방법이 존재한다. 하지만 Optimizer를 직접 제시하는 것의 한계는 어떤 알고리즘을 쓰더라도 데이터에 따라서는 최고의 성능을 보장하지 못한다는 점이다. 따라서 세미나에서는 Data에 따라 적합한 Optimizer를 제시하였다. 딥러닝 모델을 이용한 Optimizer 여기서는 LSTM을 활용하였다. 기존의 방법들은 Rule-Based로서 Optimizer의 파라미터를 미리 정하는 반면 세미나에서 제시한 방법은 모델이 학습을 진행하면서 Optimizer가 Data에 더 적합하도록 또한 학습을 시키게 된다. 다만 이 방법에도 trade-off가 존재하는데 optimizer도 학습을 진행하는 만큼 짧은 step 내로 빠르게 최소에 가까운 손실함수 값을 찾아주지만 rule-based인 optimizer보다 모델을 학습할 때보다 시간이 더 오래 걸린다는 단점이 있다. 이번 세미나를 통해 다양한 Optimizer와 그 개념에 대해서 알 수 있었고 Optimizer에 대한 새로운 접근법을 알 수 있어서 정말 많이 배울 수 있었다. 유익한 세미나를 준비해준 충협이에게 감사한다.