Top 21 딥 러닝 하이퍼 파라미터 튜닝 The 113 Top Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 딥 러닝 하이퍼 파라미터 튜닝 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Chewathai27.com/to team, along with other related topics such as: 딥 러닝 하이퍼 파라미터 튜닝 신경망 하이퍼파라미터, 머신러닝 하이퍼 파라미터 튜닝, 파이썬 하이퍼파라미터 튜닝, Keras Tuner, 텐서플로우 하이퍼파라미터, Keras Tuner 사용법, DNN 하이퍼파라미터 튜닝, 하이퍼파라미터 튜닝이란


[딥러닝II] 10강. 하이퍼파라미터 튜닝
[딥러닝II] 10강. 하이퍼파라미터 튜닝


하이퍼 파라미터 튜닝 (1)

  • Article author: analysisbugs.tistory.com
  • Reviews from users: 2202 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 하이퍼 파라미터 튜닝 (1) Deep learning 모델에서는 최적의 LR을 유동적으로 찾기 위해서, 여러가지 technique을 사용한다. 가장 대표적인 방법으로, 모델의 학습 Process 도중에 … …
  • Most searched keywords: Whether you are looking for 하이퍼 파라미터 튜닝 (1) Deep learning 모델에서는 최적의 LR을 유동적으로 찾기 위해서, 여러가지 technique을 사용한다. 가장 대표적인 방법으로, 모델의 학습 Process 도중에 … 논문 : Yu, T., & Zhu, H. (2020). Hyper-parameter optimization: A review of algorithms and applications. arXiv preprint arXiv:2003.05689. ​ ​ 1. Contribution ​ – Hyper-parameters are systematicall..
  • Table of Contents:

태그

‘데이터 다루기머신러닝 이론’ Related Articles

하이퍼 파라미터 튜닝 (1)
하이퍼 파라미터 튜닝 (1)

Read More

심층 신경망 개선: 하이퍼파라미터 튜닝, 정규화 및 최적화 | Coursera

  • Article author: ko.coursera.org
  • Reviews from users: 15314 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 심층 신경망 개선: 하이퍼파라미터 튜닝, 정규화 및 최적화 | Coursera deeplearning.ai에서 제공합니다. 딥 러닝 전문화 두 번째 과정에서는 딥 러닝 블랙박스를 열어 성과를 이끌어내고 체계적으로 좋은 결과를 만들어내는 과정을 이해 … …
  • Most searched keywords: Whether you are looking for 심층 신경망 개선: 하이퍼파라미터 튜닝, 정규화 및 최적화 | Coursera deeplearning.ai에서 제공합니다. 딥 러닝 전문화 두 번째 과정에서는 딥 러닝 블랙박스를 열어 성과를 이끌어내고 체계적으로 좋은 결과를 만들어내는 과정을 이해 … deeplearning.ai에서 제공합니다. 딥 러닝 전문화 두 번째 과정에서는 딥 러닝 블랙박스를 열어 성과를 이끌어내고 체계적으로 좋은 결과를 만들어내는 과정을 이해하게 됩니다. 최종적으로, 테스트 세트를 훈련 및 개발하고 딥 러닝 애플리케이션 구축을 … 무료로 등록하십시오.
  • Table of Contents:

심층 신경망 개선 하이퍼파라미터 튜닝 정규화 및 최적화

이 강좌에 대하여

귀하가 습득할 기ìˆ

강사

제공자

강의 계획표 – 이 강좌에서 배울 내용

주 1

딥 러닝의 실용적인 측면

주 2

최적화 알고리즘

주 3

하이퍼파라미터 튜닝 배치 정규화 및 프로그래밍 프레임워크

자주 묻는 질문

Coursera Footer

심층 신경망 개선: 하이퍼파라미터 튜닝, 정규화 및 최적화 | Coursera
심층 신경망 개선: 하이퍼파라미터 튜닝, 정규화 및 최적화 | Coursera

Read More

[5주차] 딥러닝 2단계 : 하이퍼파라미터 튜닝 :: 다 IT지~

  • Article author: sy-programmingstudy.tistory.com
  • Reviews from users: 11502 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [5주차] 딥러닝 2단계 : 하이퍼파라미터 튜닝 :: 다 IT지~ 이 글은 edwith 딥러닝 2단계 강의 목록 중 ‘하이퍼파라미터 튜닝’을 수강하고 정리하였습니다. 수식, 그래프 이미지의 출처는 강의 필기 캡처본 … …
  • Most searched keywords: Whether you are looking for [5주차] 딥러닝 2단계 : 하이퍼파라미터 튜닝 :: 다 IT지~ 이 글은 edwith 딥러닝 2단계 강의 목록 중 ‘하이퍼파라미터 튜닝’을 수강하고 정리하였습니다. 수식, 그래프 이미지의 출처는 강의 필기 캡처본 … https://www.edwith.org/deeplearningai2/joinLectures/20015 딥러닝 2단계: 심층 신경망 성능 향상시키기 강좌소개 : edwith – 커넥트재단 www.edwith.org  이 글은 edwith 딥러닝 2단계 강의 목록 중 ‘하이..공부한 것들을 기록합니다.
  • Table of Contents:

튜닝 프로세스

적절한 척도 선택하기

하이퍼파라미터 튜닝 실전

TAG

관련글 관련글 더보기

인기포스트

[5주차] 딥러닝 2단계 : 하이퍼파라미터 튜닝 :: 다 IT지~
[5주차] 딥러닝 2단계 : 하이퍼파라미터 튜닝 :: 다 IT지~

Read More

Tensorflow-1.4. 기초(5)-하이퍼 파라미터 튜닝

  • Article author: gooopy.tistory.com
  • Reviews from users: 7966 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Tensorflow-1.4. 기초(5)-하이퍼 파라미터 튜닝 제대로 된 하이퍼 파라미터 튜닝은 추후 자세히 다루도록 하겠다. 하이퍼 파라미터 튜닝(HyperParameter Tuning). 머신러닝을 공부하다 보면 하이퍼 … …
  • Most searched keywords: Whether you are looking for Tensorflow-1.4. 기초(5)-하이퍼 파라미터 튜닝 제대로 된 하이퍼 파라미터 튜닝은 추후 자세히 다루도록 하겠다. 하이퍼 파라미터 튜닝(HyperParameter Tuning). 머신러닝을 공부하다 보면 하이퍼 …  이전 포스트에서 데이터 셋을 표준 정규분포로 만들어 더 쉽게 데이터셋을 모델에 학습시켜보았다. 그러나, 패턴의 단순함에 비해 여전히 정확도(Accuracy)가 원하는 수준까지 나오질 않는다. 대체 왜 그럴까?..데이터 분석을 하기 위한 전반적인 지식들을 담아놓는 곳
  • Table of Contents:

Tensorflow-14 기초(5)-하이퍼 파라미터 튜닝

하이퍼 파라미터 튜닝(HyperParameter Tuning)

티스토리툴바

Tensorflow-1.4. 기초(5)-하이퍼 파라미터 튜닝
Tensorflow-1.4. 기초(5)-하이퍼 파라미터 튜닝

Read More

하이퍼파라미터 (Hyperparameter) > 도리의 디지털라이프

  • Article author: blog.skby.net
  • Reviews from users: 19893 ⭐ Ratings
  • Top rated: 3.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 하이퍼파라미터 (Hyperparameter) > 도리의 디지털라이프 이 외에도 다양한 하이퍼파라미터가 존재하고 최적의 딥러닝 모델 생성을 위해 하이퍼파라미터 튜닝 … 하이퍼파라미터 튜닝 기법 적용 시 주요 활동 … …
  • Most searched keywords: Whether you are looking for 하이퍼파라미터 (Hyperparameter) > 도리의 디지털라이프 이 외에도 다양한 하이퍼파라미터가 존재하고 최적의 딥러닝 모델 생성을 위해 하이퍼파라미터 튜닝 … 하이퍼파라미터 튜닝 기법 적용 시 주요 활동 …
  • Table of Contents:

도리의 디지털라이프

I 하이퍼파라미터의 개념

II 하이퍼파라미터의 종류

III 하이퍼파라미터 튜닝 기법과 활동

IV 하이퍼파라미터와 딥러닝 모델의 파라미터 비교

하이퍼파라미터 (Hyperparameter) > 도리의 디지털라이프” style=”width:100%”><figcaption>하이퍼파라미터 (Hyperparameter) > 도리의 디지털라이프</figcaption></figure>
<p style=Read More

14 장 하이퍼파라미터 튜닝 ——————– – 토닥토닥 파이썬 – 딥러닝 (텐서플로우 v2)

  • Article author: wikidocs.net
  • Reviews from users: 14885 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 14 장 하이퍼파라미터 튜닝 ——————– – 토닥토닥 파이썬 – 딥러닝 (텐서플로우 v2) 토닥토닥 파이썬 – 딥러닝 (텐서플로우 v2) · 14 장 하이퍼파라미터 튜닝 —– … 이전글 : 강의 02 효모 xx 예측 모델 학습; 다음글 : 섹션 01 하이퍼파라미터 튜닝. …
  • Most searched keywords: Whether you are looking for 14 장 하이퍼파라미터 튜닝 ——————– – 토닥토닥 파이썬 – 딥러닝 (텐서플로우 v2) 토닥토닥 파이썬 – 딥러닝 (텐서플로우 v2) · 14 장 하이퍼파라미터 튜닝 —– … 이전글 : 강의 02 효모 xx 예측 모델 학습; 다음글 : 섹션 01 하이퍼파라미터 튜닝. 온라인 책을 제작 공유하는 플랫폼 서비스
  • Table of Contents:
14 장 하이퍼파라미터 튜닝 -------------------- - 토닥토닥 파이썬 - 딥러닝 (텐서플로우 v2)
14 장 하이퍼파라미터 튜닝 ——————– – 토닥토닥 파이썬 – 딥러닝 (텐서플로우 v2)

Read More


See more articles in the same category here: https://chewathai27.com/to/blog.

하이퍼 파라미터 튜닝 (1)

논문 : Yu, T., & Zhu, H. (2020). Hyper-parameter optimization: A review of algorithms and applications. arXiv preprint arXiv:2003.05689.

1. Contribution

– Hyper-parameters are systematically categorized into structure-related and training-related. The discussion of their importance and empirical strategies are helpful to determine which hyper-parameters are involved in HPO.

– HPO algorithms are analyzed and compared in detail, according to their accuracy, efficiency and scope of application. The analysis on previous studies is not only committed to include state-of-the-art algorithms, but also to clarify limitations on certain scenarios.

– By comparing HPO toolkits, this study gives insights of the design of close-sourced libraries and open-sourced services, and clarifies the targeted users for each of them.

– The potential research direction regarding to existing problems are suggested on algorithms, applications and techniques.

2. Major Hyper-Parameters and Search Space

위 논문에서 얘기하는 바로, 하이퍼 파라미터는 크게 두 종류로 정의될 수 있다.

하나는 Training-related parameter로 모델 학습 과정에 관련된 하이퍼파라미터이다.

본 섹션에서 소개될 대표적인 예로, LR (learning rate)와 Optimizer 가 존재한다.

두 번째는 structure-related parameter로 모델의 구조에 관련된 하이퍼파라미터이다.

본 섹션에서 소개될 대표적인 예로, 히든 레이어의 개수, 각 레이어에 사용되는 뉴런의 개수 등이 존재한다.

(1) Training-related parameter

(A) LR

[5주차] 딥러닝 2단계 : 하이퍼파라미터 튜닝

https://www.edwith.org/deeplearningai2/joinLectures/20015

이 글은 edwith 딥러닝 2단계 강의 목록 중 ‘하이퍼파라미터 튜닝’을 수강하고 정리하였습니다. 수식, 그래프 이미지의 출처는 강의 필기 캡처본입니다.

튜닝 프로세스

지금까지 신경망을 학습시킬 때 여러 하이퍼파라미터들이 관여한다는 걸 배웠다. 그렇다면 좋은 하이퍼파라미터는 어떻게 찾을 수 있을까? 체계적으로 하이퍼파라미터를 튜닝할 수 있는 팁을 알아보자.

Hyperparameters

심층 신경망을 학습시킬 때 가장 어려운 일은 다뤄야 할 하이퍼파라미터가 많다는 것이다. (우선 조정하는 순으로 나열)

학습률 α

Momentum 알고리즘의 β -> 기본값 0.9 설정

은닉 유닛의 수

미니배치의 크기

은닉층의 개수

학습률 감쇠(learning rate decay) 정도

Adam 알고리즘의 β ​ 1 ​ ​, β ​ 2 ​ ​,ϵ -> 0.9, 0.999, 10^(-8)

대부분의 학습에서는 일부 파라미터들이 다른 파라미터보다 중요하다. 우선 학습률 α는 튜닝해야 할 가장 중요한 하이퍼파라미터이다. 학습률 α 이외에 주로 튜닝하는 것들로는 모멘텀이 있다. 기본값 0.9정도로 설정할 수 있다. 최적화 알고리즘을 효율적으로 돌리기 위해 미니 배치 크기도 튜닝할 수 있다. 은닉 유닛도 자주 튜닝한다. 오렌지색 글씨는 빨간색 글씨(학습률 α) 다음으로 중요한 것들이다. 보라색 글씨는 다음으로 중요한 것들이다. 그리고 Adam 알고리즘에서는 β​1​​,β​2​​,ϵ는 튜닝하지 않고 0.9, 0.999, 10^(-8)을 항상 사용한다. 물론 원한다면 튜닝을 사용해도 좋다.

Try random values : Don’t use a grid

만약 하이퍼파라미터를 튜닝한다면 어떤 값을 탐색할지 어떻게 정할 수 있을까?

i) 머신러닝이 만들어진지 얼마 되지 않았을 때는 두 개의 하이퍼파라미터가 있을 때 각각 Hyperparameter1, Hyperparameter2라고 부르는데 격자점을 탐색하는 것이 일반적이었다. (아래 그림 참고) 그리고 체계적으로 여기 있는 값들을 탐색하는 것이다. (실제로는 더 크거나 작을 수도 있지만 여기서는 5×5 격자의 25개의 점만 생각함) 그리고 최고의 하이퍼파라미터를 정하는 것이다. 이 예시는 하이퍼파라미터의 수가 적을 때 쓸 수 있다.

[그림1] 머신러닝 초기의 하이퍼파라미터 튜닝

ii) 하지만 딥러닝에서는 다음과 같은 방식을 추천한다. 무작위로 점들을 선택하는 것이다. 위 상황과 동일하게 25개의 점만 생각해보자. 그 점들에 대해서 하이퍼파라미터를 정하는 것이다. 이렇게 하는 이유는 어떤 하이퍼파라미터가 문제 해결에 더 중요한지 미리 알 수 없기 때문이다.

[그림2] 딥러닝의 하이퍼파라미터 튜닝

위에서 설명했던 것처럼 하이퍼파라미터에는 중요도 순위가 있다. 예를 들어 Hyperparameter1이 학습속도 α이고 극단적인 경우로 Hyperparameter2를 ϵ라고 하자. (ϵ: Adam 알고리즘의 분모에 있는 값) 이런 경우 α를 고르는 것이 ϵ를 고르는 것 보다 더 중요하다.

그래서 격자점(i의 상황)으로 다시 돌아가면 5개의 α값을 확인하게 되는데 이때 ϵ값이 달라도 결과는 같은 것을 확인할 수 있을 것이다. 25개의 모델을 학습시켰지만 가장 중요한 하이퍼파라미터인 α 5개에 대해서만 학습시킨 것과 다를게 없다.

[그림3] 격자점의 하이퍼파라미터 중요도 순위에 따른 결과

반대로 무작위로 모델(ii의 상황)을 고르면 어떨까? 그렇게 되면 25개의 서로 다른 학습속도 α값을 이용하여 학습시키게 되고 더 좋은 하이퍼파라미터를 잘 찾게 될 것이다.

[그림4] 무작위의 하이퍼파라미터 중요도 순위에 따른 결과

여기서는 두 개의 하이퍼파라미터만 써서 예를 들었지만 실제로는 훨씬 많은 하이퍼파라미터를 다루게 될 것이다. 예컨대 세 개의 하이퍼파라미터를 다룬다고 하면 정사각형이 아닌 정육면체를 탐색하게 되는 것이다. 그리고 세번째 차원은 Hyperparameter3를 가르키게 된다. 그 3차원 정육면체 안에서 모델을 고른다면 각 하이퍼파라미터에 대해서 훨씬 많은 값을 시험해보게 될 것이다. 실제로는 3보다 더 많은 하이퍼파라미터를 탐색하곤 한다. 그리고 어플리케이션에서 어떤 하이퍼파라미터가 가장 중요한지 미리 알기 어렵다.

=> 격자점보다 무작위로 모델을 정하는 것이 가장 중요한 하이퍼파라미터의 다양한 값을 탐색할 수 있다. 무엇이 중요하든 상관없이 말이다.

Coarse to fine

다른 일반적 방법 중 하나는 정밀화 접근이다. 아래 2차원 예시에서 이 점들을 사용한다고 해보자. 그리고 파란색 동그라미의 점이 최고라는 것을 찾았다. 그렇다면 아마도 그 주변에 있는 점들도 좋은 성능을 보일 것이다.

[그림5] 정밀화 접근

그러면 정밀화 접근에서는 더 작은 영역으로 확대해서 더 조밀하게 점들을 선택한다. 무작위인 것은 그대로지만 최고의 하이퍼파라미터들이 이 영역에 있으리라는 믿음 하에 파란색 사각형(더 작은 범위의 사각형) 안에 초점을 두고 탐색하는 것이다.

[그림6] 정밀화 접근의 과정

즉, 전체 사각형에서 탐색한 뒤에 더 작은 사각형으로 범위를 좁혀 나가는 것이다. 그렇다면 작은 사각형안에서 더 조밀하게 시험해볼 수 있다. 이러한 정밀화 접근도 자주 쓰이는 방식이다. 그리고 이렇게 하이퍼파라미터의 여러 값들을 시험해보며 학습의 목표나 개발 목표 등에 있어서 최고의 파라미터를 고르는 것이다.

이번 강의에서는 하이퍼파라미터를 찾는 방법을 체계적으로 정리했다. 이보다 더 많은 종류의 탐색이 있지만 우리가 반드시 알아야할 두가지는…

첫째, 격자점이 아닌 무작위이다.

둘째, 원한다면 정밀화 접근을 이용할 수 있다.

적절한 척도 선택하기

지난 강의에서 무작위로 하이퍼파라미터를 찾는 것이 더 효율적인 탐색이라는 것을 배웠다. 하지만 여기서 무작위라는 것이 가능한 값들 중 공평하게 뽑는 것이라고 할 수는 없다. 대신 적절한 척도를 정하는 것이 더욱 중요하다. 어떻게 척도를 정하는지 알아보자.

Checking hyperparameters at random

i) 어떤 레이어 l에 대해서 은닉 유닛의 수 n^l을 정한다고 하자. 값의 범위는 50부터 100이다. 이런 경우 50부터 100까지의 수직선에서 무작위하게 값들을 고른다고 하자. 이는 하이퍼파라미터를 고르는 꽤 합리적인 방법이다.

ii) 또는 신경망에서 레이어의 숫자 L을 정한다고 했을 때 층의 숫자가 2에서 4사이라고 생각할 수 있다. 2에서 4까지의 숫자를 선택할 때 무작위하게 뽑는 것을 물론이거니와 격자점을 사용해도 문제가 없다.

다음 i), ii)과 같은 예시들은 가능한 값 중 무작위하게 뽑는 것이 합리적인 경우이다. 하지만 모든 하이퍼파라미터가 그렇지는 않다. 다른 예시들을 살펴보자.

iii) 학습률 α를 탐색하는데 범위로 0.0001부터 1까지를 생각하고 있다고 하자. 0.0001에서 1까지의 수직선 상에서 균일하게 무작위로 값을 고르게 되면, 90%의 값이 1과 0.1사이에 존재할 것이다. 즉, 90%의 자원을 0.1과 1사이를 탐색하는 데 쓰고 단 10%만을 0.0001과 0.1사이를 탐색하는 데 쓰는 것이다. 이는 공평하다고 할 수 없다.

[그림7] 선형척도에서 학습률 α탐색

따라서 선형척도 대신 로그척도에서 하이퍼파라미터를 찾는 것이 더 합리적이다. 수직선위에 0.0001부터 0.001, 0.01, 0.1, 1까지 값들이 있을 것이다. 이런 로그 척도에서 균일하게 무작위로 값을 뽑는 것이다. 그러면 0.0001과 0.001사이, 0.001과 0.01 사이를 탐색할 때 더 많은 자원을 쓸 수 있는 것이다.

[그림8] 로그척도에서 학습률 α탐색

파이썬에서는 어떻게 구현할 수 있을까?

r=-4*np.random.rand() # -4~0사이의 무작위 값 a=10^r # 10^(-4)~10^0 사이의 값

r=-4*np.random.rand()를 쓰면 무작위로 선택된 α값은 10^r이 된다. 첫번째 줄에서 r은 -4와 0사이의 무작위 값이고 α는 10^(-4)와 10^0(== 1)사이가 된다.

더 일반적인 경우를 살펴보자. 10^a에서 10^b까지 로그 척도로 탐색한다면 수직선이 시작값이 10^a가 될 것이다. 따라서 a는 10을 밑으로 하는 log를 0.0001에 대해 취하면 얻을 수 있다. 그 결과 a는 -4가 될 것이다. 마찬가지로 수직선의 끝 값은 10^b이다. 여기서 b는 10이 밑인 log를 1에 취하면 0이라는 것을 알 수 있다. 그리고 어떻게 할까? r은 a와 b사이서 균일하게 무작위로 뽑힌다. 이 경우 r은 -4와 0사이다. 그리고 무작위 하이퍼파라미터 α는 10^r이 된다.

[그림9] 로그척도의 일반화

다시 살펴보면 낮은 값에서 log를 취해서 a를 찾고 높은 값에서 log를 취해 b를 찾는다. 이렇게 10^a에서 10^b까지를 로그 척도로 탐색하는 것이다. r은 a와 b사이에서 균일하게 무작위로 뽑으면 하이퍼파라미터가 10^r이 되는 것이다. 이렇게 로그 척도에서 샘플링 하는 법을 배워보았다.

Hyperparameters for exponentially weighted averages

또 다른 예시는 지수가중평균을 계산할 때 사용되는 하이퍼파라미터 β에 관한 것이다. β​를 0.9와 0​dp r를 를 0.9와 0.999 범위에서 찾는다고 하자. (바로 직전 포스팅 참고하길 바람)

0.9의 경우에는 지수가중평균이 최근 10일의 평균기온처럼 마지막 10개 값의 평균과 비슷하고 0.999의 경우에는 마지막 1000개 값의 평균과 비슷했던 것을 기억하는가? 바로 위에서 설명했던 것처럼 만약 0.9와 0.999 사이를 탐색한다면 그 사이를 무작위 탐색하는 것은 합리적이지 않다.

[그림10] 지수가중평균에서 하이퍼파라미터 β

더 나은 방법은 1-β​dp eogotj dp 에 대해서 값을 탐색하는 것이다. 그러면 0.1부터 0.0001이 된다. 그러면 β​fmf 를 0.1에서 0.01을 거쳐 0.001사이에서 탐색하는 것이다. 그렇다면 10^(-1)에서 10^(-3)이다. (위의 설명에서는 작은 값이 왼쪽에 큰 값이 오른쪽에 있었지만 여기서는 반대임) 즉, 여기서 해야할 일은 -3과 -1사이에서 균일하게 무작위로 값을 뽑는 것이다. 1-β를 10^r로 생각하면 되니 β가 1-10^r이 되는 것이다.

[그림11] 1-β에 대해서 값을 탐색하는 과정

이렇게 적절한 척도 위에서 무작위로 하이퍼파라미터 샘플은 추출한다. 이 방법을 이용하면 0.9부터 0.99를 탐색할 때와 0.99부터 0.999를 탐색할 때 동일한 양의 자원을 사용할 수 있다.

이쯤 되면 왜 이러한 방법이 필요한지 수학적 증명이 궁금할 것이다. 왜 선형 척도에서 샘플을 뽑는 것은 좋지 않을까? 만약 β가 1에 가깝다면 β가 아주 조금만 바뀌어도 결과가 아주 많이 바뀌게 된다. 예를들어 β가 0.9에서 0.9005로 바뀌었다면 결과에 거의 영향을 주지 않는다.(1번 상황) 하지만 β가 0.999에서 0.9995로 바뀌었다면 알고리즘 결과에 큰 영향을 줄 것이다.(2번 상황) 1번의 경우, 대략 10개의 값을 평균내는 것이지만 2번의 경우에는 마지막 1000개의 값의 지수가중평균을 내는 것에서 마지막 2000개 값의 평균을 내는 것으로 바뀌었기 때문이다. 왜냐하면 1/(1-β)라는 식이 β가 1에 가까워질수록 작은 변화에도 민감하게 반응하기 때문이다. 따라서 β가 1보다 가까운 곳에서 더 조밀하게 샘플을 뽑는다. 반대로 1-β는 0이 가까운 곳이 된다. 따라서 가능한 결과 공간을 탐색할 때 더 효율적으로 샘플을 추출할 수 있는 것이다. ​dp eogotj dp ​dp eogotj dp ​dp eogotj dp 가 ​dp eogotj dp 가 ​dp eogotj dp rk 2ㅓ(왜

[그림12] 선형 척도의 단점에 대한 필기

이 강의를 통해 하이퍼파라미터 샘플을 고를 때 적절한 척도를 고를 수 있게 되길 바란다. 만약 하이퍼파라미터를 고를 때 적절한 척도를 사용하지 않더라도 크게 걱정하지 않아도 된다. 다른 척도가 우선하는 상황에서 균일한 척도에서 샘플링을 하더라도 정밀화 접근을 사용하면 괜찮을 결과를 얻을 수 있다. 그래서 반복할수록 더 유의미한 하이퍼파라미터 범위를 탐색하게 되는 것이다.

하이퍼파라미터 튜닝 실전

이전까지는 하이퍼파라미터를 탐색하는 방법을 설명하지 않았다. 하이퍼파라미터 탐색을 마무리하기에 앞서 탐색을 어떻게 할 수 있는지 몇 가지 팁을 알려드리고자 한다.

Re-test hyperparameters occasionally

오늘날 딥러닝은 여러 분야에 적용되고 있다. 한 어플리케이션에서 얻은 하이퍼파라미터에 대한 직관이 다른 영역에서 쓰일 수도, 아닐 수도 있다. 서로 다른 어플리케이션 영역 간에 공유되는 것들이 있다. 예를 들면 컴퓨터 비전 커뮤니티에서 발전된 컨브넷이나 레스넷 등이 있다. (이는 강의 뒷부분에서 다시 다룰 것임) 이것들은 음성에 잘 적용되고 있다. 그리고 이 음성에서 발전된 아이디어 들이 자연어 처리에서도 잘 적용되고 있는 것을 보았다.

[그림 13] 여러 분야에 적용되고 있는 딥러닝

즉, 딥러닝 분야의 사람들이 다른 영역에서 영감을 얻기 위해 그 분야의 논문을 점점 많이 찾아 읽고 있다. 하지만 하이퍼파라미터를 찾는 과정은 그렇지 못하다는 직관을 얻었다.

로지스틱 문제 하나만 보더라도 여러분이 좋은 하이퍼파라미터를 찾았다고 할 때 알고리즘을 계속 발전시키거나 몇 달에 걸쳐 데이터가 바뀔 수도 있다. 데이터 센터의 서버를 업그레이드 시킬 수도 있다. 이러한 변화들 때문에 여러분이 찾았던 하이퍼파라미터가 녹스는 것이다. 그래서 다시 시험해보고나 하이퍼파라미터들이 아직도 만족할만한 결과를 내는지 몇 달마다 재평가하기를 권한다.

결국 사람들이 하이퍼파라미터를 찾을 때 크게 두 가지 서로 다른 방법을 사용한다.

Babysitting one model

첫번째 방법은 모델 돌보기이다. 데이터는 방대하지만 CPU나 GPU 등 컴퓨터 자원이 많이 필요하지 않아서 적은 숫자의 모델을 한번에 학습시킬 수 있을 때 사용한다. 이런 경우에 학습과정에서 모델 돌보기를 사용한다.

예를 들어 0일차에 무작위하게 매개변수를 설정하고 학습을 시작했다. 그러면 학습곡선에서 비용함수 J나 개발 세트의 오차가 하루가 다르게 점진적으로 감소할 것이다. 1일차 끝 무렵에 학습이 꽤나 잘 된다. 그러고 나면 학습 속도를 조금 올려서 조금 더 나은지 보자고 말할 수 있다. (이런 식으로 성능을 올려나가는 것임) 그리고 2일차에도 꽤 좋은 성과를 내고 있는 것을 볼 수 있다. 여기서도 모멘텀을 약간 올리거나 학습속도를 약간 낮출 수 있다. 그리고 3일차에 들어선다… 그렇게 하이퍼파라미터를 계속 조절하다보면 어떤 날엔 학습속도가 너무 커서 몇 일 전으로 돌아가기도 한다. 이렇게 며칠, 몇 주에 걸쳐 매일 모델을 돌보며 학습시키는 것이다.

[그림 14] 모델 돌보기 방식

이와 같이 모델 돌보기는 성능을 잘 지켜보다가 학습 속도를 조금씩 바꾸는 방식이다. 이 방식은 여러 모델을 동시에 학습 시킬 컴퓨터의 자원이 충분치 않을 때 사용한다.

Training many models in parallel

또 다른 접근은 여러 모델을 함께 학습시키는 것이다. 여러분이 갖고 있는 하이퍼파라미터를 며칠에 걸쳐 스스로 학습하게 한다. 그럼 아래와 같은 함수(파란색)를 그리게 된다. 비용함수 J를 그린 것 일수도 있다. 학습 오차나 개발 세트의 오차 등 어떤 수치를 나타내고 있을 것이다. 그리고 동시에 다른 모델의 다른 하이퍼파라미터 설정을 다루기 시작한다. 두번째 모델(보라색)은 다른 학습 곡선을 그리게 된다. 아래 보이는 것처럼 말이다. (두번째 모델이 더 나은 그래프를 그리고 있음) 그리고 동시에 세번째 모델(빨간색)도 학습시킨다. 학습 곡선이 아래와 같이 그려진다. 또 다른 것들(주황색, 초록색)은 발산하는 그래프 모양을 그린다. 아래아 같이 서로 다른 모델을 동시에 학습시키는 것이다. 아래 주황색 선들도 서로 다른 모델을 나타낸다.

[그림 15] 동시에 여러 모델 훈련

이 방법을 쓰면 여러 하이퍼파라미터 설정을 시험해볼 수 있다. 그리고 마지막에 최고 성능을 보이는 것을 고르는 것이다. 이 예시에서는 아마 다음 곡선이 최고의 곡선일 것이다.

[그림 16] 최고의 성능 곡선

Babysittine one model Training many models in parallel 팬더와 같다. (팬더는 한 번에 한 마리씩만 아이를 갖는다) 그리고 아기 팬더가 살아남을 수 있도록 정말 많은 노력을 기울인다. 말 그대로 모델이나 아기 팬더를 ‘돌보기’하는 것이다. – 포유류의 번식 과정 캐비어 전략이라고도 한다. (물고기랑 비슷하기 때문) 한 철에 1억개의 알을 품는 물고기가 있다. 물고기가 번식하는 과정은 하나에 많은 집중을 쏟기보다 하나 또는 그 이상이 더 잘 살아남기를 그지 지켜본다. – 어류, 파충류의 번식 과정

이 두 접근중에 무엇을 선택할지는 컴퓨터 자원의 양과 함수에 관계가 있다. 만약 여러 모델을 동시에 학습시키기에 충분한 컴퓨터를 갖고 있다면 물론 캐비어 접근을 사용해서 서로 다른 하이퍼파라미터를 시험해 볼 수 있다. 하지만 온라인 광고나 컴퓨터 비전 어플리케이션 등 많은 데이터가 쓰이는 곳에서는 학습시키고자 하는 모델이 너무 커서 한 번에 여러 모델을 학습시키기 어렵다. 물론 어플리케이션에 따라 큰 차이가 있지만 주로 팬더 접근을 사용한다. 하나의 모델에 집중해 매개변수를 조금씩 조절하며 그 모델이 잘 작동하게끔 만드는 것이다. 하지만 팬더 접근에서도 한 모델이 잘 작동하는지 확인한 뒤에 2-3주 뒤에 다른 모델을 초기화해서 다시 돌보기를 할 수 있다. 팬더가 일생에 여러 마리의 새끼를 돌보는 것처럼 말이다. 한 번에는 하나 혹은 아주 적은 숫자의 새끼만 돌보지만 말이다.

이 강의를 통해 하이퍼파라미터 탐색에 대한 좋은 감을 얻으셨길 바란다. 그리고 하이퍼파라미터에 상관 없이 튼튼한 신경망을 만드는 방법이 있다. 모든 신경망에 적용되는 것은 아니지만 적용이 가능하다면 하이퍼파라미터 탐색이 훨씬 쉽고 빨라진다. 이는 다음 포스팅에서 자세히 설명하겠다.

Tensorflow-1.4. 기초(5)-하이퍼 파라미터 튜닝

728×90

반응형

이전 포스트에서 데이터 셋을 표준 정규분포로 만들어 더 쉽게 데이터셋을 모델에 학습시켜보았다. 그러나, 패턴의 단순함에 비해 여전히 정확도(Accuracy)가 원하는 수준까지 나오질 않는다. 대체 왜 그럴까?

이번 포스트에서는 경험적 하이퍼 파라미터 튜닝 방법을 사용하여, 하이퍼 파라미터를 튜닝해보도록 하겠다. 제대로 된 하이퍼 파라미터 튜닝은 추후 자세히 다루도록 하겠다.

하이퍼 파라미터 튜닝 (HyperParameter Tuning)

머신러닝을 공부하다 보면 하이퍼 파라미터라는 단어와 파라미터라는 단어가 반복해서 등장하는 것을 볼 수 있다.

파라미터(Parmeter)라는 단어는 코딩을 하다 보면 자주 보이는, 수정할 수 있는 값인데, 갑자기 왜 하이퍼 파라미터라는 값이 등장할까? 또, 왜 파라미터는 수정할 수 없는 값이라고 할까?

머신러닝에서의 파라미터는 가중치(Weight), 편향(Bias) 같은 학습 과정에서 모델이 자동으로 업그레이드하며 갱신하는 값을 가리킨다.

파라미터는 학습 도중 머신이 알아서 바꿔가는 것이므로, 연구자가 손 델 수 있는 값이 아니다.

머신러닝에서 하이퍼 파라미터는 그 외 연구자가 수정할 수 있는 값으로, 학습률, Optimizer, 활성화 함수, 손실 함수 등 다양한 인자들을 가리킨다.

이 값들을 손보는 이유는 모델이 학습에 사용한 데이터 셋의 형태를 정확히 알지 못하고, 데이터 셋의 형태에 따라 이들을 사용하는 방법이 바뀌기 때문이다.

1. 하이퍼 파라미터 튜닝을 해보자.

우리는 이미 우리가 만들어낸 데이터 셋의 형태를 알고 있다.

우리가 만들어낸 데이터셋은 선형 데이터셋인데, 우리는 활성화 함수로 은닉층에서 ReLU를 사용하였다.

이번엔 모든 활성화 함수를 linear로 만들어 학습시켜보자.

# Import Module import pandas as pd import numpy as np from tensorflow import keras from tensorflow.keras.layers import Dense # Dataset Setting def f(x): return x + 10 # Data set 생성 np.random.seed(1234) # 동일한 난수가 나오도록 Seed를 고정한다. X_train = np.random.randint(0, 100, (100, 1)) X_test = np.random.randint(100, 200, (20, 1)) # Label 생성 y_train = f(X_train) y_test = f(X_test) # Model Setting model = keras.Sequential() model.add(Dense(16, activation=’linear’)) model.add(Dense(1, activation=’linear’)) # Compile: 학습 셋팅 opt = keras.optimizers.Adam(learning_rate=0.01) model.compile(optimizer=opt, loss = ‘mse’) # 특성 스케일 조정 mean_key = np.mean(X_train) std_key = np.std(X_train) X_train_std = (X_train – mean_key)/std_key y_train_std = (y_train – mean_key)/std_key X_test_std = (X_test – mean_key)/std_key

# 학습 >>> model.fit(X_train_std, y_train_std, epochs = 100) Epoch 1/100 4/4 [==============================] – 0s 2ms/step – loss: 2.5920 Epoch 2/100 4/4 [==============================] – 0s 997us/step – loss: 1.5766 Epoch 3/100 4/4 [==============================] – 0s 2ms/step – loss: 0.7499 Epoch 4/100 4/4 [==============================] – 0s 2ms/step – loss: 0.3371 Epoch 5/100 4/4 [==============================] – 0s 2ms/step – loss: 0.0817 Epoch 6/100 4/4 [==============================] – 0s 2ms/step – loss: 0.0059 … Epoch 95/100 4/4 [==============================] – 0s 1ms/step – loss: 6.0676e-15 Epoch 96/100 4/4 [==============================] – 0s 1ms/step – loss: 6.2039e-15 Epoch 97/100 4/4 [==============================] – 0s 2ms/step – loss: 6.4773e-15 Epoch 98/100 4/4 [==============================] – 0s 2ms/step – loss: 5.6185e-15 Epoch 99/100 4/4 [==============================] – 0s 1ms/step – loss: 6.5939e-15 Epoch 100/100 4/4 [==============================] – 0s 1ms/step – loss: 6.7939e-15

# label과 test set을 비교해보자. pred = model.predict(X_test_std.reshape(X_test_std.shape[0])) pred_restore = pred * std_key + mean_key predict_DF = pd.DataFrame({“predict”:pred_restore.reshape(pred_restore.shape[0]), “label”:y_test.reshape(y_test.shape[0])}) predict_DF[“gap”] = predict_DF[“predict”] – predict_DF[“label”] predict_DF

# 정확도(Accuracy)를 보자 >>> print(“Accuracy:”, np.sqrt(np.mean((pred_restore – y_test)**2))) Accuracy: 1.0789593218788873e-05

고작, 은닉층의 활성화 함수만 바꿨을 뿐인데, 이전보다 훨씬 좋은 결과가 나왔다.

패턴을 거의 완벽하게 찾아내었으며, 정확도(Accuracy) 역시 0.000010789(e-05는 $10^{-5}$을 하라는 소리다.)로 거의 0에 근사하게 나왔다.

2. 정리

위 결과를 보면, 아무리 단순한 패턴이라 할지라도, 그 데이터 셋의 형태를 반영하지 못한다면, 정확히 그 결과를 찾아내지 못할 수 있다는 것을 알 수 있다.

인공지능은 흔히들 생각하는 빅데이터를 넣으면, 그 안에 숨어 있는 패턴이 자동으로 나오는 마법의 상자가 아니라, 연구자가 그 데이터에 대한 이해를 가지고 여러 시도를 해, 제대로 된 설계를 해야만 내가 원하는 제대로 된 패턴을 찾아낼 수 있는 도구다.

그러나, 실전에서는 지금처럼 우리가 이미 패턴을 알고 있는 경우는 없기 때문에 다양한 도구를 이용해서, 데이터를 파악하고, 적절한 하이퍼 파라미터를 찾아낸다.

넣을 수 있는 모든 하이퍼 파라미터를 다 넣어보는 “그리드 서치(Greed search)” 나 랜덤 한 값을 넣어보고 지정한 횟수만큼 평가하는 “랜덤 서치(Random Search)” , 순차적으로 값을 넣어보고, 더 좋은 해들의 조합에 대해서 찾아가는 “베이지안 옵티마이제이션(Bayesian Optimization)” 등 다양한 방법이 있다.

나 랜덤 한 값을 넣어보고 지정한 횟수만큼 평가하는 , 순차적으로 값을 넣어보고, 더 좋은 해들의 조합에 대해서 찾아가는 등 다양한 방법이 있다. 같은 알고리즘이라 할지라도, 데이터를 어떻게 전처리하느냐, 어떤 활성화 함수를 쓰느냐, 손실 함수를 무엇을 쓰느냐 등과 같은 다양한 요인으로 인해 다른 결과가 나올 수 있으므로, 경험을 많이 쌓아보자.

728×90

반응형

So you have finished reading the 딥 러닝 하이퍼 파라미터 튜닝 topic article, if you find this article useful, please share it. Thank you very much. See more: 신경망 하이퍼파라미터, 머신러닝 하이퍼 파라미터 튜닝, 파이썬 하이퍼파라미터 튜닝, Keras Tuner, 텐서플로우 하이퍼파라미터, Keras Tuner 사용법, DNN 하이퍼파라미터 튜닝, 하이퍼파라미터 튜닝이란

Leave a Comment