- 2018년 3월 23일 오후 1:00
- 조회수: 5817
REFERENCES
INFORMATION
- 2018년 3월 23일
- 오후 1시 ~
- 고려대학교 신공학관 218호

TOPIC
OVERVIEW
발표자 후기

금일 세미나는 Neural Architecture Search (NAS)라는 주제로 진행했다. 구글에서 소개하는 AutoML과 연결되는 개념으로 'AI를 만드는 AI를 만드는 연구'라고 할 수 있다. 데이터에 알맞는 뉴럴 네트워크 구조를 디자인하는데는 경험이 많은 전문가조차도 오랜 시간이 걸리는 작업이며, 모델의 크기나 데이터의 종류에 따라 네트워크 학습 자체에도 오랜 시간이 걸린다. 이 때문에 좋은 결과를 얻을 수 있는 아키텍쳐를 경험적으로 디자인하는 것은 상당히 어려운 작업이다. 이러한 문제점을 해결하기 위해 시작된 연구가 Neural Architecture Search with Reinforcement Learning이다. 뉴럴 네트워크의 경우 지정해주어야 하는 hyperparameter의 종류와 개수에 대한 조합이 일반적인 머신러닝 알고리즘들에 비해 엄청나게 많기 때문에, hyperparameter를 찾기 위한 알고리즘을 따로 설계한 것으로 생각된다. 가장 핵심적인 아이디어이자 전체적인 프로세스는 다음과
같다.
[기본 프로세스]
1) 뉴럴 네트워크의 hyperparmeter (fitler 개수, convolution 연산의 차원 등)을 지정해주는 RNN Controller를 생성
2) 생성된 hyperparameter를 기반으로 네트워크를 여러 개 구축
3) 학습을 효과적으로 하기 위하여 생성된 네트워크 (child network)를 병렬적으로 학습
4) 학습된 네트워크로부터 validation accuracy를 reward로 받아와 policy gradient 기반으로 RNN Controller를 업데이트
RNN Controller는 sequence-to-sequence 형태의 RNN 구조를 띄고 있다. 각 state 별로 사전에 정해진 hyperparameter의 search space로부터 값을 샘플링한다. 이 과정을 반복하여 일정 개수만큼의 레이어에 대한 hyperparameter 값들을 지정하게 된다. 이 과정을 마치면 병렬처리를 통해 '동일한 hyperparameter로 만들어진 다수의 child network'를 학습한다. 같은 구조를 갖는 뉴럴 네트워크라 하더라도 학습되면서 얻어지는 validation accuracy는 서로 조금씩 다르기 때문에 반복실험의 효과를 가질 수 있다. 해당 논문에서 CIFAR-10에 알맞는 CNN 구조를 생성하기 위해 총 800개의 child network를 동시에 학습했다고 한다. Validation Accuracy는 RNN Controller의 파라미터에 대하여 미분이 불가능하기 때문에, policy gradient 기반의 방법론을 사용하여 RNN Controller를 업데이트한다. 미분이 불가능한 이유에 대해서 생각해보면, RNN Controller의 매 시점마다 softmax classifier를 통해 'child network의 hyperparameter'들이 나오는데, 이는 argmax로 정해져서 나오며 validation accuracy 계산에는 직접적으로 명시가 되지 않는다. NAS에서는 Williams의 REINFORCE 알고리즘을 사용하였으며, Q-learning 등의 다른 알고리즘보다 튜닝이 더 편하다는 장점이 있다고 한다.
[CNN 아키텍쳐 생성]
CNN에서 주로 사용되는 테크닉 중 skip connections을 만들어주기 위해 anchor point라는 개념을 소개한다. 이는 이전 레이어들의 정보를 attention 기반으로 받아들일 수 있는 지점이라고 생각할 수 있다. N번째 레이어의 anchor point는 이전 N-1개 레이어들의 정보를 받아들일 수 있는 N-1개의 connections이 있으며, 모델을 생성하기 위해서는 해당 connections들의 확률분포를
기반으로 샘플링하게 된다. 실험 결과 생성된 CNN 구조를 살펴보면 Filter의 높이, 너비를 따로 선택하기 때문에 직사각형 모양의 필터가 많이 생성된 것을 볼 수 있으며, 첫 번째 convolution 연산이 일어난 직후에 skip connections가 많이 생성된 특징을 찾을 수 있다.
[RNN Cell 생성]
RNN Cell을 생성하기 위해서 논문에서는 RNN 연산을 일종의 트리 구조로 표현하였다. 트리 구조는 RNN Cell 내부에서 일어나는 연산의 흐름을 설명하며, 이는 RNN Controller에서 hyperparameter를 연속적으로 생성하는데 알맞는 구조라고 생각된다. 첫 번째 연산단계에서 leaf node들은 이전 hidden state의 정보와 현재 state의 x값을 input으로 받아 add, elementwise multiplcation과 같은 '2개의 input을 합치는 combination 연산'을 수행하게 된다. 이후에 activation 연산을 통해 비선형 변환을 수행하게 되며 이 과정이 하나의 스텝이다. 이러한 과정을 연속적으로 반복하여 최종 output 단계로 갔을 때 이는 다음 hidden state 정보로 저장된다. 또한, RNN Controller의 마지막 2개의 block에서는 1) cell variable에 저장할 트리의 인덱스 2) 이전 cell variable의 정보를 합칠 트리의 인덱스를 지정하게 되어 LSTM에서 사용되는 cell memory 기능을 디자인 할 수 있도록 설계한 것이 CNN 구조 설계와는 차이점이라고 할 수 있다.
[실험 결과 및 이후 논문들]
CNN과 RNN Cell을 디자인하여 각각을 CIFAR-10, Penn Treebank에 적용하여 모델의 성능을 평가한 결과, 사람이 직접적으로 디자인한 state-of-art 모델들과 유사한 성능을 내며, RNN Cell의 경우 오히려 더 좋은 성능을 보였다고 한다. 하지만, 모델의 구조를 조금 바꾸면 전체적으로 성능이 하락하는 것으로 보아 일종의 local optimum이라는 한계점이 존재한다. 가장 중요한 점은 모델을 학습시키는데 있어서 여러개의 GPU와 CPU를 사용해야 한다는 현실적인 제약조건이 있으며, 네트워크 구조를 학습하는데 오랜 시간이 걸린다. 이를 해결하기 위해서 여러가지 논문이 나왔으며, 그 중 2개를 세미나 마지막에 간략하게 소개하였다.
Learning Transferable Architectures for Scalable Image Recognition은 CNN의 경우에 한정지어 NAS를 효과적으로 디자인하는 논문이다. Hyperparameter를 찾는 Search Space를 연산의 집합으로 정의하여 효율을 높였으며, 기존에는 전체적인 레이어와 세부적인 파라미터들을 모두 디자인하였다면 이 논문에서는 Convolution Cell의 블록을 설계하는데 초점을 맞추었다. Input으로 받아올 2개의 이전 레이어를 선택한 후, 각각의 레이어에 대하여 convolution, pooling 등의 연산을 수행하고 결과를 합치는 과정을 반복적으로 수행하여 레이어를 순차적으로 쌓아나아게 된다. 비록 전체적인 CNN Architecture는 사람이 설계했지만 ImageNet 실험 결과 다른 최신 논문들보다 좋은 성능을 낸 것을 확인하였다.
Efficient Neural Architecture Search via Parameter Sharing은 올해 2월달에 구글에서 발표한 논문으로, NAS에 비해 약 1천배 이상의 효율을 보여주는 구조를 설계하였다. Directed Acyclic Graph를 이용해 네트워크를 만드는 구조 및 과정을 표현하고, 학습되는 다수의 child network의 weight를 서로 공유하게 디자인함으로써 학습시간을 획기적으로 단축하였다. NAS에서는 병렬처리를 위해 800개의 컴퓨터를 사용하였지만, 해당 논문에서는 GPU 1개로 약
16시간 동안 실험을 진행하여 네트워크 구조를 디자인하였다고 한다.
청취자 후기

오늘 전체세미나에서는 민구가 “Neural Architecture
Search”를 발표하였다. 항상 Layer를
쌓을 때 Hyperparameter나 쌓는 구조를 어떻게 쌓아야 하는지 고민이 많았는데 이번 전체세미나를
통하여 고민을 해결하였다. Neural Architecture Search의 경우 최적의 Layer구조와 Parameter를 찾아주는데 RNN이나 CNN의 경우 내뱉은 값이 SoftMax인 경우 argmax를 내뱉기 때문에 미분이 불가능하다. 따라서, 강화 학습을 통하여
Space를 줄여주고 효과적으로 찾을 수 있도록 모델링 하였다. 세미나를 들으면서 민구가
언급 하였던 것처럼 800개의 GPU를 사용하여 모델을 돌린
것은 배보다 배꼽이 더 큰 것 같았다. 그래서 Efficient
Neural Architecture Search라는 논문을 뒤에 리뷰를 해줬는데, GPU하나를
가지고 16시간 동안 약 1000배 빠른 속도로 찾아주는
알고리즘이다. ENAS의 경우 그전에 연산했던 작업을 기억하여 그 다음 똑 같은 연산이 있을 때 다시
연산하지 않고 전에 연산했던 것을 사용하여 효과적으로 Architecture Search를 해주는 것이다. 기존의 NAS보다 효율적이라 실제 한번 모델에 적용해 보고 싶은
마음이 들었다.

오늘 세미나에서는 Reinforcement Learning을 이용한
네트워크 구조 결정 방법에 대해 소개를 들을 수 있었다. RNN을 네트워크의 파라미터를 스스로 생성해낼
수 있도록 디자인을 한다. 그리고 여기에서 생성된 하이퍼 파라미터를 이용해서 모델을 만든 후 Validation 정확도를 계산한다. 계산된 정확도를 Reward로 해서 Policy Gradient를 이용해서 RNN을 학습한다. 이렇게 하면 처음에는 정확도가 낮은 네트워크 구조가
제안되지만 학습이 진행됨에 따라서 점차적으로 성능이 좋은 구조가 제안되게 된다. 모델의 학습 구조 결정에
강화학습을 사용했다는 점이 상당히 흥미로웠다. 전체적으로 보았을 때는 조합최적화 문제를 해결하는 Black Box 모델을 만들었다고 생각된다. 이러한 Black Box 기반의 최적화 알고리즘이 다양하게 있는데 그러한 방법들과 어떠한 차이가 있는지 궁금했다. RNN을 사용했기 때문에 최적화 결과의 길이가 다양할 수 있다는 장점은 있을 것 같은데 좀 더 생각해 보면
다양한 분야에 적용해볼 수 있지 않을까 생각이 되었다. Pointer Network도 유사한 개념이
아닐까 생각이 되는데 관련지어서 공부해볼 필요가 있다고 생각된다.

Neural Architecture Search (이하 NAS) Process에서 Policy Gradient 기반으로 모델을
업데이트 했다는 점이 매우 흥미로웠다. RNN Controller의 업데이트를 위해 강화학습의 Policy Gradient로 Expected Reward를 최대화한
것이다. 선행 연구들에 의하면 Policy Gradient의
단점으로 Local Optimum에 빠질 염려와 Variance가
높다는 것으로 알려져 있다. 여기서 NAS Process는
Variance를 줄여주기 위한 Baseline Function을
사용했다. 그리고 GoogleNet 과 Residual Net에서 사용되는 skip connection을 생성하도록
모델링을 했다. Information Theory에서의 ‘이전정보’ 를 가져오기 위해 W_prev*h_j+W_curr*h_i 의 학습 파라미터를 이용했다. NAS의 input layer가 여러 개 연결될 경우 depth dimension을 기준으로 합쳤는데 이 때 차원의 일치를 위해 Rule들을
만들었다. RNN의 경우 기존 Long-Short Term
Memory(이하 LSTM)와 유사한 Cell을 만들기 위해 controller를 설계했다. LSTM은
hidden layer 상에서 매우 복잡함이 단점으로 지적되어 왔다.
본 NAS Process는 이 Cell의 구조를
Tree형태로 표현해서 NAS Cell 구조로 만들었다. Tree의 연산은 Leaf Node (8개) - Internal Node (4개) - Internal Node (2개) – Terminal(1개)로 이루어지며 이는 다음 cell 정보에 저장된다.
CIFAR-10 데이터셋으로 CNN
모델 실험결과는 DenseNet에 비해 1.05배의
빠른 속도를 나타냈다. Penn Treebank 데이터셋으로 RNN 모델
실험결과는 LSTM의 주요 Architecture들과 RNN-LDA 등 22가지의 알고리즘들에 비해 최대 Test Perplexity 성능이 3.6 향상됨을 보였다.
매우 유익한 세미나를 만들어 준 민구 선배에게 감사의 마음을 전한다. 각자의
주된 연구분야가 다양하지만 전체 세미나를 통해 발표자뿐만 아니라 청취자의 적극적인 질문들이 서로에게 따뜻한 자극제가 되었다. 무엇보다 제 자신을 뒤돌아 보는 계기가 되었다.

오늘 전체세미나는 'Neural Architecture Search'라는
주제로 곽민구 연구원이 진행하였다. 'AI를 구축하는 AI를
만들고자 함'이라는 주제소개가 인상적이었다. 현재 여러프로젝트를
진행하며. 뉴럴네트워크 계열 알고리즘인 RNN, CNN등에서
어떤 네트워크 구조가 이 분야 데이터에 적합할 것인가는 항상 궁금했던 문제이다.
Hyperparameter를 어떻게 설정할 것인지 다루는 조합최적화
문제와 같은 개념이며, 네트워크 구조를 디자인하는 딥러닝 구조를 만들고자 함이 이 논문의 목적이다.
Search space가 매우 큰 딥러닝 알고리즘에서 효율적 탐색을
위해 강화학습 방법중 하나인 policy gradient를 적용하여
Controller를 학습하는 것이 main idea이다.
Google사에서 AutoML(자동화머신러닝)프로젝트로
고안한 이 idea는 많은 양의 하드웨어가 요구되어 개발자 개개인이 시도해보기에는 무리가 있어보이지만, 누구나 알고싶었던 문제 해결을 시도를 한 것에 의의가 있다고 생각한다.
발표자께서 다양한 개념이 혼합된 아이디어를 설명하기 위해 단계적으로 잘 설명해주시어 큰그림을 그려 따라가기 수월하였다. 또한, 오늘 세미나로 딥러닝 계열 알고리즘을 구현정도 해본 나에게
디테일한 구조를 다시금 공부해보게 끔 했던 계기가 되었다.

DNN모델의 구축은 고정 돼 있는 형태의 모델이 아니라 다양한 형태로
구축할 수 있는 장점이 있다. 그러나 데이터의 특징, 형태에
따라 특정한 기준이 없으며 hyperparameter의 개수와 모델의 검증을 위한 training 시간등 고려해야할 사항이 많으므로 오히려 단점이기도 하다. 따라서
아마도 DNN 모델링을 하는 많은 연구자가 어떻게 하면 데이터에 최적화된 hyperparameter를 찾을 수 있을까? 하는 고민이 있었을
것으로 생각된다. 그리고 실제로 GA, random search등의
방법을 통해 DNN모델을 구축하는 연관된 연구들이 많이 제안 되었었다.
이번 세미나에서는 이와 같이 DNN 모델을 구축하기 위한
DNN모델인 Neural Architecture Search (NAS)에 대해 다뤘다. 간단히 말해서 DNN 모델을 구축하기 위한 현재의 hyperparameter를 State라 하고 이를 통해 모델을 구축하는
과정을 Action, 마지막으로 Action을 통해 얻어진 validation error가 reward라 매칭할 수 있을 것
같다. 물론 엄청난 양의 하드웨어가 필요하긴 했지만, 마지막에
다룬 ENAS의 경우 효율성이 1000배 이상 증대된 만큼
충분히 나중에 적용할 수 있지 않을까? 라는 생각이 들었다. 비록
내용은 100% 완벽히 소화되진 않았지만 최근 관심이 생긴
reinforcement learning를 이렇게 접근할 수 도 있구나 라는 생각이 들어 매우 유익한 세미나 였다고 생각한다.

오늘 세미나는 강화학습을 활용하여 데이터에 가장 적합한 인공신경망 구조를 찾는
'Neural Architecture Search (NAS) with Reinforcement Learning' 논문의 내용을 공유하는
시간이였다. Seq-to-seq 구조를
갖는 RNN controller는 매 시점마다 child
network의 특정 hyperparameter 값을 내뱉는 action을 취한다. 이러한 일련의 action들의 조합으로 만들어진 child network를 주어진
데이터로 학습을 하고, 검증 데이터에 대한 분류 정확도를 reward를
사용하여 RNN controller를 반복 학습한다. 학습을
용이하게 하기 위해 수백 개의 CPU/GPU를 사용하여 분산처리를 해야한다는 점에서 우리가 직접 사용하기엔
무리가 있는 프레임워크이지만, 딥 러닝 모델을 구축할 때 최적의
hyperparameter (CNN의 필터 개수, 너비,
높이 혹은 RNN의 cell 구조 등)을 결정하는 일이 가장 번거롭고 어려운 문제를 강화학습으로 풀어내는 시도를 했다는 점에서 큰 의의를 갖는다고
생각한다. 이 논문이 2016년 말에 게재되었을 때 처음
접한 바 있었는데, 위와 같이 시간, 장비 등의 자원 문제로
실제로 우리가 활용하기엔 무리가 있다는 판단 하에 대수롭지 않게 넘겼던 기억이 있다. 오늘의 세미나
후반부에는 올해 초에 등장한 'Efficient Neural Architecture Search(ENAS)
with Parameter Sharing'이라는 논문도 잠시 소개되었는데, 기존 NAS보다 좋은 성능을 1080ti GPU 한 대 만으로 내는 것을
보면서 그 동안 한 분야의 초석을 닦는 연구를 등한시했던 내 자신에 대해 반성하게 되었다. 아울러 연구라는
것이 산을 오르는 것처럼 한 번에 되는 것이 아니라 한 단계씩 밟고 올라가는 것임을 다시 한 번 깨달을 수 있었다. 내용뿐만 아니라 연구를 바라보는 나의 시각에 대해 성찰할 수 있는 유익한 세미나였다고 생각한다.

데이터과학자들의 역할 중 하나는 분류 및 예측 모델이 좋은 성능을 나타내도록 최적의 모델 구조 및 Hyperparameters를 지정하는 것 이다. 모델의 복잡성은
모델 마다 조금씩 다르지만, 구조 및 Hyperparameters에
따라 성능이 매우 달라지고 이를 결정하는데 모델 및 데이터에 대한 높은 이해를 필요로 한다. 본 세미나에서는
강화학습을 바탕으로 딥러닝 모델의 구조 및 Hyperparameter를 자동으로 구축해주는 RNN 기반 딥러닝 모델을 구축하는 연구에 대해서 소개하였다. 다른
기계학습 모델에 비해 딥러닝 모델은 결정해야 하는 요소들이 복잡하고, 모든 경우의 수를 고려해서 최적
구조(조합)를 찾는 것은 불가능 하다고 볼 수 있다. 본 연구에서는 기존의 휴리스틱 방법 또는 최적화 방법 대신 최근 많은 관심을 받고 있는 강화학습 방법을 이용하였다. 연구내용을 보면 다소 높은 컴퓨팅 조건을 요구하고, 실험 내용도
보완이 필요 할 것으로 보이지만, 기존의 휴리스틱 방법 또는 최적화 방법과는 다른 접근이라는 부분에서
독창적이고 앞으로의 연구 발전 가능성도 크다고 생각된다. 이러한 연구가 지속되고 발전된다면, 데이터과학자로써 역할이 어떻게 달라질지 고민하도록 만들어주었다.

곽민구 연구원님께 감사의 말씀드립니다. 발표에 많은 노력이 묻어났고
방대한 논문을 잘 정리해줘서 전달해주셔서 얻어간 것이 많습니다. 금주 세미나는 강화학습 중 Policy based의 REINFORCE 알고리즘을 활용해서 뉴럴넷
아키텍쳐에 대한 최적의 하이퍼파라메터(즉 여기서는 논문제목처럼
Architecture라고 총칭하는 듯하며, value외 뿐만 아니라 구조(DAG형식, RNN Cell)에 대한 것을 모두 포괄한다.)를 찾아내는 것을 목표로 한다. 이를 위해 오래 걸리는 learning에 대해서 800대 이상의 컴퓨터를 활용했고 sampling을 해서 나온 하이퍼파라메터를 다양한 데이터셋을 가지고 학습을 하여 나온 reward를 가지고 최적의 정책을 찾아내는 강화학습을 연결했다는게 발상 자체가 참 신선했다. 그게 구글이어서 가능하다라는 말에 공감한다. 질문도 나왔지만 유전
알고리즘 같은 것으로 하이퍼파라메터를 찾아내는 것에 대한 부분도 의문이 들며 실제로 안되는건지 비슷한 사례가 있다면 비교를 한 자료도 추후에 followup을 했으면 좋을 것 같습니다. 이 부분에 대한 연구도
구글 내에서 끊임없이 연구되어 AutoML에
반영되어 딥러닝의 대중화를 이끌 것이고 결국 하이퍼파라메터 영역도 인간의 손을 떠날 일이 머지 않을 것 같은 생각 또한 들었습니다.

오늘 세미나에서는 neural architecture search (NAS)에
대해서 다뤘다. NAS는 하이퍼파라미터가 많은 neural
network 모델을 효과적으로 정해주기 위한 방법이다. 기존에는 random search, sequential Bayesian optimization 등을 이용한 연구가 있다. 오늘 소개한 방법론은 neural network의 하이퍼파라미터를
결정해주는 RNN 모델을 만들어 이를 강화학습으로 학습하여 최적의
CNN 구조 혹은 RNN cell을 design 할
수 있게 했다. 이 때, action은 CNN의 하이퍼 파라미터 혹은 RNN의 셀 구조가 되며, reward는 주어진 구조로 학습을 마친 neural network의 validation accuracy 가 된다. NAS의 개발 초기에는
모델의 최적 구조를 찾기 위해 많은 computation 자원이 필요 했지만, 최근에 나온 논문에서는 단일 gpu를 갖은 데스크탑 pc에서 작동 가능한 수준의 알고리즘이 제안되었다. 세미나에서는 이러한
연구 흐름과 관련된 몇 편의 논문을 잘 정리해서 전달해주어 유익하고 흥미로운 시간이었다.

금일 세미나는 Neural Architecture Search with
Reinforcement Learning과 Efficient Neural Architecture
Search via Parameter Sharing의 두 논문에 대한 발표였습니다. AutoML이라
하여 AI의 프레임과 구조를 설정해주는 부분에 있어
Hyperparameter를 설정하는 등 어려움이 많은데 이를 자동화 방법에 대한 연구이다. RNN을
기반으로 컨트롤러를 구성하여 학습시키고, 네트워크
Hyperparameter를 생성하는 방식을 병렬로 학습시키는 NAS 과정과 만들어지 구조상에서 leaf node구조를 갖은 cell과 RNN 학습을 하는 일련의 과정을 통해 하드웨어를 얼마나 충분히 이용가능한지 보여준 연구였다. 단지 하드웨어 이용에 대한 비용적 측면에서 아쉬움을 느꼈다.

금일 세미나는 Neural Architecture Search를 주제로
진행하였다. 보통 Artificial Intelligence 기반
모델을 구축 할 때 각 layer들의 파라미터를 설정하는 부분에서 사람이 설정해주어야 하는 어려움이
있는데 이를 보다 더 사용자에게 접근 용이 하도록 하는 것이 NAS(Neural Architecture
Search)이다. 처음에 사용자가 지정해야 했던 파라미터를 인공지능으로 설정해주는 Controller을 만드는 것이 핵심이고 이는 네트워크 파라미터 생성, 생성된
네트워크 학습, 검증 정확도, 그리고 Policy Gradient 기반 모델 업데이트의 총 네 가지의 단계로 이루어진다. 논문에서는 Controller을 학습하기 위해 RNN 기법을 사용했는데 이는 Neural Network의 각 layer마다 파라미터를 정할 때 전 layer 파라미터의 특성을
반영해야 하기 때문이다. 기존에는 이 파라미터를 Random
Search를 사용했지만 사람이 하는 것이 아닌 기계가 함에도 비슷한 성능과 효율을 보인다는 점에서
contribution이 있다. 개인적으로 Neural
Network에 대해 공부하여 파라미터 설정 및 모델 아키텍처의 구성방법에 대해 궁금증이 많았는데 세미나 내용과 연구원 선배들의 질의응답을
통해 경험적인 지식을 쌓을 수 있는 기회였다고 생각한다.

다른 머신러닝 알고리즘에 비해 CNN, RNN 등 딥러닝 모델은 사용자가
선택해야 하는 파라미터가 너무 많기 때문에 모델 구축 자체가 하나의 어려운 문제이다. 따라서 최적의
파라미터를 찾는 방식에 대해 Bayesian optimization이나 genetic algorithm 등이 적용되고 있다. 오늘 세미나에서는
강화학습의 개념을 이용하여 딥러닝 모델을 구축하는 연구에 대해 다루었다. 딥러닝 모델 구조를 결정하는
모델을 controller 라 하여, 이 역시도 RNN 모델이다. 이전 레이어의 정보가 다음 레이어로 이어져야 한다는
관점에서 사용된 것 같은데 다소 복잡한 접근일 수 있지만 합리적이라 생각한다. 본 논문에서는 사람이
구축한 모델과 비교하여 오류율이 비슷하거나 낮다는 관점으로 실험을 진행하였다. 현재의 사람이 결정해야할
것을 모델로 대체할 수 있다는 것인데 사실 파라미터 결정에 대한 연구이기 때문에 기존 파라미터 최적화 연구들과 비교가 되어야 더 적합하다 생각한다. 그러나 강화학습을 이용한 것 만으로도 의미가 있으며 앞으로 어떻게 전개가 될 지 궁금해지는 연구이다. 발표자는 쉽지 않은 개념을 전달하기 위해 발표자료를 잘 준비했다. 역시
장표를 잘 만드는 것이 발표를 잘 할 수 있는 가장 좋은 방법이라는 것을 다시 한 번 느꼈다.

금일 세미나는 NEURAL ARCHITECTURE SEARCH WITH
REINFORCEMENT LEARNING (2016) 논문을 바탕으로 (Neural
Architecture Search(NAS) Process 에 대한 이해에 중점을 두었다. 성능이
좋은 네트워크 구조를 학습하여 데이터에 적합한 딥러닝 구조를 찾아주는 모델 구성을 목표로 구조를 디자인하는
Controller를 학습하는 방법에 대한 논문으로 네트워크 Hyperparamenter 생성
후 생성된 네트워크를 학습하고 Validation Accurcy R 을 개선하는 방향으로 Policy Gradient 기반 모델 업데이트를 진행하는 과정을 반복하여
Controller 를 학습하게 된다. 이 과정에서 사용되는 CNN, RNN 의 강화학습 방법에 대한 설명과 실험 결과에 대한 개선점을 확인 할 수 있었다. 최근 발표된 NASNet 과
ENAS 에 대한 개념도 공유 되었으며 NAS 대비 개선 사항도 확인하였다. 개인적으로는 내용이 어려워 이해가 잘 되지는 않았으나 금일 세미나로 새로운 분야에 대한 시각을 넓힐 수 있어
좋았고, 각 방법론의 개념에 대하여 학습할 필요를 느꼈다.

오늘 세미나 주제는 구글에서 진행한 AutoML이었다. AutoML에 대한 이야기는 들어보았지만 그 안에 세부적인 알고리즘이 어떻게 구현되는지는 몰랐던 상황이어서
세미나에 주제가 매우 흥미로웠다. CNN, RNN의 structure를
디자인 해주는 AI를 구현하기 위해서 RNN 기반의 모델을
사용하였다. RNN 기반의 controller는 argmax가 미분되지 않기 때문에 기존의 방법으로는 파라미터 update가
힘든 상황이고 따라서 강화학습 방법의 policy gradient를 이용해 파라미터를 학습하였다. policy gradient가 지난 seq GAN에서도 다루어졌기에
이에 대한 이해를 시간을 내어 꼭 이해할 필요를 느꼈다. 또한 NAS의
비효율성을 해결한 ENAS의 알고리즘에서 Directed
Acyclic Graph를 이용하여 네트워크를 만드는 과정을 표현하고 parameter
sharing을 통해 학습시간을 단축시킴을 설명들었을 때 몇몇 선배들의 연구주제, 그리고
작년 informs에서 network와 관련된 연구들이 생각났다. graph와 관련된 연구들에 관하여 관심을
갖고 보는 것도 필요하다고 느낄 수 있었다.

이번 세미나에서는 Neural Architecture Search를
다루었다. 해당 아이디어는 구글의 자동화 머신러닝 프로젝트에서 출발한 내용이다. 다양한 비즈니스 영역에서 머신러닝을 사용하고자 하는 사용자들이 데이터에 맞게 사용하는 알고리즘의 하이퍼 파라미터를
선택하는 데에 도움을 주고자 하였다. 특히 머신러닝 알고리즘 중에서도 딥러닝 계열의 알고리즘은 하이퍼
파라미터를 어떻게 선택하느냐에 따라 해당 알고리즘의 구조가 많이 달라지기 때문에 이러한 시도는 최근의 트렌드에 부합하는 것으로 보인다. NAS를 써서 네트워크 전체를 디자인하거나 Cell을 디자인하여
사람이 제안한 네트워크에 사용함으로써 사용자가 최적화된 네트워크를 설계하는 데이 도움을 줄 수 있다. 누구나
한번쯤 고민해본 적이 있는 문제인 하이퍼 파라미터 결정 문제에 대한 접근 방식이 인상적이었고, 이 아이디어를
소개하는 과정에서 발표자가 보조자료를 잘 이용하여 상세히 설명해주어 유익한 세미나였다.

금일 세미나는 neural architecture search라는
주제로 진행되었다. 최근 CNN, RNN 등 다양한 neural network들이 여러 분야에서 좋은 성능을 나타내고 있으며, 많은
분야에서 시도되고 있다. Neural network를 사용함에 있어 가장 어려운 점 중 하나는 neural network가 가질 수 있는 구조가 너무나 다양하며, 일반적으로
학습에 적지 않은 시간이 요구되기 때문에 분석하고자 하는 데이터에 최적의 구조 또는 적합한 구조를 찾는 것이다.
일반적으로 neural network 구조는 잘 알려진 연구 결과, 또는 연구자의 시행착오 등을 통해 결정된다. 이런 문제점을 해결하기
위해서 좋은 neural network 구조를 tuning하기
위한 다양한 시도들이 있었다. Random search 또는
Bayesian optimization 등을 이용하여 현재 데이터에서 좋은 validation
performance를 내는 구조를 선택하는 연구들이 진행되어왔다. 세미나에서 발표된 연구들은 reinforcement learning을 통해서 좋은 neural
network 구조를 tuning하는 방법론들이었다.
Neural network의 layer를 쌓는 것을
sequential decision making을 하는 것과 같이 간주하고, RNN 기반의 controller를 정의하고 이를 policy gradient를
통해 학습하는 방식의 연구가 가장 처음으로 제안되었으며, 실험에 매우 많은 computing 자원이 필요하여 현실적이지는 못하나 RL을 이용하여 NN의 구조를 tuning하려는 좋은 시도라고 생각한다. 특히, CNN에서의 filter
size/dimension/stride와 같은 단순 구조 뿐만이 아니라 skip connection이나, RNN에서 cell을 결정하는 문제를 다룰 수 있다는 점이 신기했다. 이후에 발표된 연구에서는 CNN의
layer 역시 cell 형태로 디자인하여 학습하는 방식이 제안되었다고 하며, 한 번에 바로 이해하기는 어려웠으나, 이전까지 접하지 못했던 새로운
방식이었다. 마지막에 간략하게 언급된 Efficient NAS의
경우, RL을 이용하여 neural network 구조를 tuning 하는 방법론이 실용적인 단계까지 발전한 것으로 보이며, 기회가
된다면 사용해보는 것도 좋을 것 같다.

금주 참석한 세미나에서는 ‘Neural Architecture Search’라는
주제로 먼저 NAS에 대한 설명과 이 구조가 갖는 퍼포먼스를 확인하고,
알고리즘이 갖는 비효율적인 한계를 지적하며 이를 개선한 ENAS로 2개의 알고리즘에 대한 설명으로 진행하였다.
NAS는 AutoML의
방법론이라 할 수 있으며 AutoML은 분석하고자 하는 특정 data에
머신러닝 알고리즘을 대해 손쉽게 적용할 수 있도록 서비스를 제공하는 자동화 머신러닝 프로젝트이다. 이는
딥러닝이나 머신러닝에서 filter size, layer’s depth 등의 의사결정에 따라 모델의
성능이 차이가 발생하고, 각 네트워크의 디자인을 구축하고 이를 실험하는데 오랜 시간이 걸리기 때문에 AI기반으로 딥러닝 구조를 만들어주는 모델을 구성하기 위한 것이다. NAS의
핵심적인 개념은 RNN을 기반으로 하는 controller를
만들어 architecture를 생성하고, 이 architecture를 학습시켜 성능을 향상, Neural network의
구조를 결정하는 parameter를 결정한다는 것이고 이는 결론적으로
hyper parameter를 결정하는 과정에서 사람의 개입을 최소화하면서 optimization하는
것이 목적이다. 이후 NAS에서 만들어진 RNN Cell구조에서 tree형태로 표현되는 과정과 CNN 실험결과에서 비교 대상이었던 DenseNet에 대한 개념에
대해 알려주셨고, 마지막으로 image task에 focus하여 search space를 cell의 관점에서 디자인하여 모델의 학습 효율이 높아진 NASNet과 parameter sharing을 하여 반복적으로 사용 가능하여 효과적인
ENAS에 대해 소개해 주셨다. 아직 딥러닝 알고리즘에 대해 이해가 많이 부족하다는 것을
느꼈고, 세미나에서 느끼는 이해의 한계에 대해 창피해하기보다는 더욱 적극적으로 참여하며 이후에도 꾸준히
학습해야겠다는 필요성을 느낄 수 있는 유익한 세미나였다.