-
[Do it! 강화 학습 입문]7장. 강화 학습으로 만드는 신경망 구조도서 정리/Do it! 강화 학습 입문 2023. 8. 23. 15:30
본문의 모든 내용과 이미지의 저작권은 이지스퍼블리싱의 Do it! 강화 학습 입문 도서에 있습니다.
7-1. NAS란 무엇일까?
- NAS(Neural Architecture Search)는 컴퓨터 스스로 이미지 분류나 자연어 처리 등에 필요한 신경망 구조를 찾는 기술
1. 얼마나 공부해야 NAS를 사용할 수 있을까
- NAS를 사용하는데 필요한 지식 수준을 4가지로 정리하면 다음과 같음
- NAS가 만들어 내는 신경망 구조와 특징
- NAS가 신경망 구조를 만드는 순서
- NAS를 실행하는 데 필요한 옵션과 그 의미
- NAS 실행 결과 파일의 해석 방법과 활용 방법
- 위 4가지 관점에서 NAS를 공부
- 위 순서로 공부하면 NAS의 원리를 넓은 시각으로 이해하면서 활용하는데 무리 없음
2. 스스로 발전하는 NAS
- <터미네이터> 라는 영화에서는 스스로 학습하여 로봇을 생산해내는 ‘스카이넷’이 등장
- NAS는 ‘스카이넷’과 비슷한 개념
- 스카이넷이 스스로 로봇을 만들듯, NAS는 스스로 신경망 구조를 만듦
3. Automated ML에 포함된 NAS
- NAS는 Automated ML에 포함된 기술이며, 이 기술의 이력서만 훑어보는 수준으로 공부해도 NAS를 이해하는데 도움을 받을 수 있음
- Automated ML은 딥러닝, 머신러닝에서 반복해야 하는 복잡한 일을 컴퓨터가 자동으로 처리하는 기술
- NAS는 Automated ML 범주에 속하는 기술
- 이 기술이 유명해진 계기는 구글의 AutoML이라는 서비스 덕분
- 데이터를 입력하는 것만으로도 머신러닝 모델을 만들고 활용 가능하도록 구성되어 있음
- 어떤 종류의 학습을 진행할지 선택 후, 데이터를 입력하면 모델을 클라우드에서 자동 학습
Google의 AutoML 서비스 Automated ML의 구성 알아보기
- Automated ML은 하이퍼파라미터 최적화, NAS, 특징점 추출이라는 기술 분류로 구성
- 하이퍼파라미터 최적화
- ResNET, ADANet, GoogleNet 등과 같은 신경망 구조를 사용하여 딥러닝을 실행할 때 가장 적합한 배치 크기, 학습률, 에포크 수 등의 하이퍼파라미터를 자동으로 찾아 주는 기술
- 딥러닝에서 사용하는 하이퍼파라미터의 모든 조합을 전체 학습에 사용하기 무리가 있음
- 학습 횟수와 연산 시간이 아주 많이 필요
- 하이퍼파라미터 최적화를 사용하면 연구에 많은 도움을 받을 수 있음
- 특징점 추출 기술
- 머신러닝에 필요한 주요 특징점(feature)을 자동으로 추출해 주는 기술
- 특징점 : 데이터의 특징을 나타내는 지점
- 특징점을 어떻게 추출하는지에 따라 모델의 성능이 달라지므로 전문가의 영역
- 특징점 추출을 전문으로 하지 않는 연구자에게 유용
- 머신러닝에 필요한 주요 특징점(feature)을 자동으로 추출해 주는 기술
4. NAS가 필요한 이유 알아보기
- 딥러닝 진행 과정에서 NAS가 어느 지점에서 어떤 역할을 하는지 설명
일반적인 딥러닝 진행 과정 - 주목해야 할 지점은 3단계인 학습 모델 선택 및 재설정
- 이 단계에서 모델의 성능을 끌어 올리기 위해 신경망 구조를 직접 수정하기도 함
- 이런 작업을 신경망 구조의 정교화 라고 함
- 신경망 구조는 모델 성능에 많은 영향을 주므로 무척 중요
- 신경망 구조를 수정하기 위해선 전문가 수준으로 딥러닝 이론을 잘 알아야 함
- 보통 인공지능 분야의 개발자는 잘 만들어진 신경망 구조를 응용하여 사용
- NAS를 사용하면 전문가가 아니라도 신경망 구조의 정교화 작업이 가능
- 더 많은 연구자가 더 다양한 모델을 만들어 적용할 수 있는 기회가 생긴 것
- NAS는 일종의 컴퓨터 작업이므로 사람의 실수를 줄일 수도 있음
Automated ML이 추가된 딥러닝 진행 과정 - 3단계와 6단계에서 NAS와 하이퍼파라미터 최적화가 진행
- 이 단계에서 Automated ML이 반복 작업을 진행
- 일반적인 딥러닝 진행 과정의 2단계로 돌아갔던 반복 작업과는 크게 달라진 양상
5. 신경망 구조로 이해하는 NAS
- NAS가 신경망 구조를 어떻게 정교화하는지 알려면 일반적인 신경망 구조 정교화 과정을 살펴보는 것이 좋음
- 이미지 처리를 위한 신경망 구조 CNN(Convolution Neural Network) 몇 가지의 정교화 과정을 살펴봄
신경망 구조의 정교화 과정 3가지
- GoogLeNet, ResNET, DenseNet이라는 3가지 신경망 구조의 특징을 정리
- 3가지 신경망 구조의 특징은 NAS가 신경망 구조를 자동으로 생성하는 주요 방식으로 사용
GoogLeNet 신경망 구조의 정교화 과정 - 연산자 묶음 반복
GoogLeNet의 신경망 구조(Szegedy et al. 2015 인용 및 재구성) - 구글에서 만들어 발표한 신경망 구조
- 매우 복잡해 보이지만 자세히 보면 비슷한 연산자 묶음이 반복되고 있다는 것을 알 수 있음
- 연산자 묶음이 신경망 구조의 정교화에서 나온 결과물
- 이런 연산자 묶음을 ‘Inception Module with Dimension Reductions’ 라고 부름
연산자 묶음 확대 - 연산자 묶음을 보면 특정 내용이 반복되는 것을 알 수 있음
- GooLeNet은 신경망 정교화 작업을 거쳐 이러한 연산자 묶음이 반복된다는 특징을 갖게 된 것
- 딥러닝 신경망 구조는 연산자 묶음 단위를 1가지 이상 포함하고 있으며, 신경망 구조 전체에서 반복해서 사용될 수 있는점을 기억
ResNet 신경망 구조의 정교화 과정 - 스킵 커넥션 추가
- ResNet은 마이크로소프트 리서치에서 만든 신경망 구조
- 신경망 구조의 계층 깊이에 따라 ResNet50, ResNet101 등으로 표시
- CNN 신경망 구조는 계층이 깊어지면 경사 소실(Vanishing Gradient Problem)이 발생하여 모델의 정확도가 떨어지는 문제점이 있었음
- ResNet은 잔차(residual)를 도입하여 이 문제를 해결
ResNet 34의 신경망 구조(He et al. 2016 인용) - 경사 소실 문제를 해결하려 특정 계층(연산자)의 출력값에 이전 계층 입력값(잔차)를 더함
- 이런 방법을 **스킵 커넥션(Skip Connection)이라 함
- 경사 소실 문제가 해결되어 신경망 구조의 계층을 더욱 깊게 만들 수 있게 됨
- 스킵 커넥션을 활용하여 신경망을 깊게 만들면서 성능 유지가 가능하게 되었음을 기억
경사 소실이란?
신경망의 오차 역전파에서 가중치들을 수정하려면 미분값, 즉 기울기 값이 필요하지만 신경망의 층이 늘어나면서 역전파를 통해 전달되는 기울기 값이 점점 작아지는 문제
이는 기존의 활성화 함수가 시그모이드 함수이기 때문, 시그모이드 함수의 미분 최대값은 0.25, 1보다 작은 값이 신경망을 거치면서 계속 곱해지기 때문에 기울기 값이 0과 가까워짐시그모이드 함수의 미분 값 DenseNet 신경망 구조의 정교화 과정 - 계층 간의 연결 개선
- ResNet의 한계를 극복하려 등장
- 이전 계층의 입력값을 한 계층이 아니라 여러 계층에 연결
- 초기 입력값의 특징이 뒤쪽의 깊은 계층까지 잘 전달되게 됨
- 하지만, 이렇게 하면 계층이 깊어질수록 더 많은 차원의 입력값을 받아야 하는 문제가 생김
- 이는 연산의 복잡함을 초래
- DenseNet은 연산의 복잡도를 줄이려 Dense 블록이라는 단위를 정의
- Dense 블록 내에서만 이전 계층의 입력값이 연결되게 함
- 블록이 끝나는 지점에서 다운 샘플링(Down Sampling)을 하여 차원을 축소
ℹ️ 다운 샘플링을 해주는 이유
다음 Dense 블록으로 입력되는 값의 차원이 최초 입력값 차원과 같아야 하기 때문DenseNet 신경망 구조(Huang et al. 2016 발췌 및 재구성) - DenseNet은 계층 간 연결에서 몇 단계 이전 계층의 출력을 연결하거나 여러 출력을 연결 가능하다는 것을 기억
딥러닝 신경망 구조 정교화의 3가지 특
1. 연산자의 묶음 단위가 몇 가지 존재하며 신경망 구조 전체에서 반복 사용될 수 있음
2. 스킵 커넥션을 활용하여 신경망을 깊게 만들면서도 성능 유지가 가능
3. 계층 간 연결은 몇 단계 이전 계층의 출력을 연결하거나 여러 출력을 연결 가능7-2. NAS 흐름 알아보기
1. NAS의 핵심 아이디어 알아보기
- NAS의 목표는 신경망 구조가 가장 좋은 성능을 낼 수 있는 최적의 연산자 조합을 찾는 것
- 어떤 과정을 거쳐 최적의 연산자 조합을 찾는지 알아봄
NAS의 진행 3단계
- NAS는 신경망을 구성할 수 있는 연산자의 조합을 탐색 공간으로 설정
- 탐색 공간에서 주어진 문제를 해결 가능한 신경망 구조를 최적의 탐색 전략으로 선택
- 이때, 탐색 전략으로 선택된 신경망 구조를 자식 신경망 구조(Child Network)라고 함
- 이렇게 찾아낸 자식 신경망 구조에서 가장 성능이 좋은 것이 NAS가 내놓은 결과
- 어떤 자식 신경망 구조가 가장 좋은 성능을 보이는지는 성능 평가 전략에 따라 판단
- 즉, 신경망 구조를 찾기 위해 탐색 공간을 설정하고, 탐색 전략으로 자식 신경망을 선택하고, 성능 평가 전략에 따라 신경망을 평가하는 과정을 거치면 학습에 필요한 최적의 신경망 구조 완성
- 이 단계를 어떻게 구현하느냐에 따라 다양한 NAS가 만들어 짐
- 최적의 신경망 구조가 만들어지면 딥러닝으로 모델을 학습시킴
NAS를 활용한 딥러닝 3단계 신경망 구조의 탐색에서 강화 학습의 역할
강화 학습에서 이뤄지는 신경망 구조의 학습 흐름 - 강화 학습에서 환경을 구성하고 조절하는 에이전트의 역할은 순환 신경망(RNN)이 담당
- 순환 신경망을 통해 구성된 자식 신경망의 구조는 딥러닝 학습으로 평가 받음
- 평가 결과는 에이전트의 보상으로 입력
- 입력된 보상은 순환 신경망의 파라미터로 넘어가 새로운 자식 신경망 구조를 반복 생성
- 반복은 자식 신경망 구조의 예측률이 목표 예측률 R에 도달하면 멈춤
- 즉, NAS는 강화 학습의 흐름을 그대로 따른다는 것을 알 수 있음
NAS의 흐름에 강화 학습까지 함께 보기
- NAS의 기본 흐름과 강화 학습에서 이뤄지는 탐색을 하나로 합쳐 그림으로 나타내면 다음과 같음
강화 학습을 통한 신경망 구조의 학습 및 딥러닝 진행 - 신경망 구조의 탐색 과정은 강화 학습에서 환경을 만들거나 조절하는 에이전트에 해당
- 신경망 구조의 평가는 강화 학습에서 환경에 해당
- NAS에서 만든 최적의 신경망 구조로 딥러닝 학습을 진행
- 이렇게 강화 학습으로 신경망 구조를 학습하는 NAS 종류는 NAS, NASNet, ENAS가 있음
- NAS의 종류에 따라 탐색 공간의 구성과 탐색 전략의 성능 평가 전략이 변경됨
ℹ️ NAS는 신경망 구조를 자동으로 찾는 기술을 통칭 초기에 나온 NAS라는 알고리즘을 대표 명사처럼 사용
- NAS의 3가지 종류 모두 기본 흐름은 같음
NAS가 이뤄지는 신경망 구조의 생성 단계별 동작 - 처음 실행되면 최초로 한 번 선택한 NAS에 필요한 하이퍼파라미터를 인잣값으로 넣음
- 신경망 구조의 깊이
- 강화 학습의 에포크 수
- 자식 신경망의 구조 평가를 위한 학습 배치 크기(Batch Size)
- 학습률(Learning Rate)
- 딥러닝 학습의 에포크 수(Epoch)
- 탐색 전략에 따라 자식 신경망의 파라미터를 결정하면서 평가를 진행할 자식 신경망이 선택 됨
- NAS 학습의 첫번째 에포크에서는 자식 신경망의 평가 결과가 없으니 랜덤값, 또는 정해진 초기값을 사용하여 파라미터가 결정 됨
- 선택된 자식 신경망은 딥러닝으로 평가받고 새로운 자식 신경망을 탐색하거나 해당 자식 신경망을 최종 결과물로 결정하고 종료
NAS로 만든 신경망 구조 예 - 점선 사각형으로 둘러싼 영역이 1개 계층
- 각 계층은 하나의 연산자(conv, sep, max)와 앞쪽 계층 입력값과 출력값을 이어주는 연결로 구성
- 이 때, 각 계층의 연산자 종류와 연산자 간의 연결이 NAS에서 찾아낸 값
- 즉, 자식 신경망의 파라미터 값
NAS의 병목 지점 알아보기
- NAS는 탐색 공간을 설정한 뒤, 탐색 전략으로 신경망 구조를 탐색하고 평가하는 과정에서 많은 자식 신경망의 구조를 평가 함
- 신경망의 구조를 평가할 때는 딥러닝 학습이 진행되므로 매우 많은 시간이 필요
- 이 부분이 NAS의 병목 지점
NAS 병목 지점의 해결 과정
- NAS는 CIFAR-10 데이터세트의 이미지 분류 신경망 구조를 생성하는데 GPU 800개를 동시에 사용하여 21~28일이 소요되었음
- NASNet은 저충실도 예측(Lower Fidelity Estimates)을 사용하여 NAS의 병목 현상을 크게 개선
- GPU 450개를 사용하여 3~4일 만에 신경망 구조를 생성
- 가장 최근의 ENAS는 자식 신경망의 구조 평가에서 반복되는 계산 결과를 재사용함으로써 NASNet의 병목 현상을 개선
- GPU 1개를 사용하여 0.45일(10.8시간)만에 신경망 구조를 생성
ℹ️ 저충실도 예측이란?
학습률을 변경하면서 학습을 진행시켜 고정된 학습률을 사용할 때보다 적은 에포크로 최저 오류율에 빠르게 도달시키게 하는 기술2. ENAS 학습 결과 살펴보기
- ENAS는 매크로(macro) 탐색 공간과 마이크로(micro) 탐색 공간이라는 2가지 탐색 공간으로 신경망 구조를 만듦
- 매크로 탐색 공간은 NAS의 탐색 공간을 이어받아 합성곱 연산자의 단일 연결만으로 신경망을 구성
- 마이크로 탐색 공간은 합성곱 연산자의 입체적인 조합인 셀(cell)의 연결로 신경망을 구성
- 2가지 탐색 공간 모두 합성곱 사이, 즉 셀 내부 합성곱 사이에 스킵 커넥션이 생성됨
- 딥러닝 신경망 구조 정교화의 3가지 특징을 적용해 구성되어 있음
딥러닝 신경망 구조 정교화의 3가지 특징
1. 연산자의 묶음 단위가 몇 가지 존재하며 신경망 구조 전체에서 반복 사용될 수 있음
2. 스킵 커넥션을 활용하여 신경망을 깊게 만들면서도 성능 유지가 가능
3. 계층 간 연결은 몇 단계 이전 계층의 출력을 연결하거나 여러 출력을 연결 가능매크로 탐색 공간의 탐색 결과
- 매크로 탐색 공간의 학습 결과는 조합할 수 있는 합성곱의 종류, 크기, 개수, 연결 순서와 계층 간의 연결 여부 중에서 가장 성능이 좋은 조합으로 신경망 구조를 찾는 것
ENAS 매크로 탐색 공간으로 찾아낸 신경망 구조 - 매크로 탐색 공간으로 찾아낸 신경망은 합성곱 연산(계층)을 몇 번 사용하는지 하이퍼파라미터로 결정하고 신경망 구조를 학습
마이크로 탐색 공간의 탐색 결과
- 마이크로 탐색 공간은 일반 셀과 환원 셀을 차례로 교차하면서 신경망을 구성
- 이때 셀은 몇 개의 연산자 간에 연결되는지 정의해서 신경망 전체에서 반복하는 단위
- 일반 셀(normal cell)과 환원 셀(reduction cell)은 다음과 같은 차이가 있음
- 일반 셀: 신경망 구조에서 일반 연산을 하는 셀
- 환원 셀: 일반 셀에서 늘어나거나 축소된 차원을 다음 일반 셀의 입력에 맞게 환원해 주는 셀
- ENAS가 학습하는 항목은 일반 셀과 환원 셀을 구성하는 5개 블록 내부 연산자 종류와 블록 간의 연결 관계
- NASNet에서 사용한 블록을 그대로 사용
NASNet 블록으로 생성된 신경망 구조의 부분 예 ENAS 마이크로 탐색 공간으로 찾아낸 신경망 구조 '도서 정리 > Do it! 강화 학습 입문' 카테고리의 다른 글
[Do it! 강화 학습 입문]8장. NAS 더 자세히 알아보기 (0) 2023.08.23 [Do it! 강화 학습 입문]6장. 분산 강화 학습 공부하기 (0) 2023.08.23 [Do it! 강화 학습 입문]5장. 영화 <아이언맨>의 자비스 만들기 (0) 2023.08.22 [Do it! 강화 학습 입문]4장. 딥레이서로 구현하는 자율 주행 (1) 2023.08.09 [Do it! 강화 학습 입문]3장. 알파고 도전을 위한 첫걸음 (0) 2023.07.06