BookmarkSubscribeRSS Feed

[SAS Viya] Neural Network with SAS Viya

Started ‎12-30-2020 by
Modified ‎12-31-2020 by
Views 492

안녕하세요

오늘은 Neural Netwotk의 개념과 SAS Viya에서 사용하는 Neural Network option에 대하여 소개하겠습니다. 


_2020-12-31__11.36.18 (1).png
 

인공신경망 뉴런

인공신경망은 두뇌의 신경세포, 즉 뉴런이 연결된 형태를 모방한 모델입니다. 즉. 생물학적인 뉴런이 위의 그림과 같이 다른 여러개의 뉴런으로부터 입력 값을 받아서 세포체(cell body)에 저장하다가 자신의 용량을 넘어서면 외부로 출력값을 내보내는 것처럼, 인공신경망 뉴런은 여러 입력값을 받아서 일정 수준이 넘어서면 활성화되어 출력 값을 내보냅니다.

 

_2020-12-31__11.43.31 (1).png

 

그림으로 Neural Network를 이해하면, 생물학적인 뉴런의 수상돌기는 input #1 ~ #4 입니다. 이러한 입력값들은 가중치(파라미터) 값 θ1, θ2, θ3를 가집니다. 입력을 통한 출력값을 output으로 활성화 함수(Activation Function)이라고 불립니다.

생물학적인 뉴런의 세포체가 일정한 용량을 넘어서면 외부로 출력 값을 보내는 것처럼, 활성화 함수 도한 일정 값을 넘어서면 1, 그 이하는 0 값을 출력하기 위해 시그모이드 함수(Sigmoid function)를 사용합니다.

시그모이드 함수(Sigmoid function)는 활성화 함수로 많이 사용되며, 모든 실수 값을 0 과 1 사이의 값으로 변환시킵니다. 입력값과 각각의 가중치 세타(θ)값으로 계산된 결과를 시그모이드 함수에 입력하여 0과 1사이의 값으로 바꾸며, 보통 0.5를 기준으로 0.5미만은 0 0.5 이상은 대응되도록 하여 활성화 함수(Activation Function)을 사용합니다.

 

+)

세포체 (뉴런) - Node

수상돌기 - 입력(Input)

축삭돌기 - 출력(Output)

시냅스 - 가중치(Weight)

 

_2020-12-31__11.42.03 (1).png
 
 
인공 신경망 뉴럴 네트워크는 뉴런들을 여러개 쌓아서 만들 수 있습니다. 위의 그림은 3개의 Hidden layer로 구성된 뉴럴 네트워크입니다.
 
_2020-12-31__11.54.06 (1).png

 

 

Neural Network에서 중요한 것 중 하나가 Hyper-parameter를 어떻게 설정하는 것입니다.

먼저, Hyper parameter는 학습 진도율이나 일반화 변수처럼 사람들이 선험적 지식으로 설정을 하거나 또는 외부 모델 메커니즘을 통해 자동으로 설정이 되는 변수를 말합니다.

그렇기 때문에 meta - parameter라고 불리기도 합니다.

  • Hyper-parameter 종류와 설명
  1. Learning rate - 학습진도율로 gradient 방향으로 얼만 빠르고 이동을 할 것인지를 결저합니다. 학습진도율이 너무 작으면 학습의 속도가 너무 느리게 되고, 반대로 너무 크면 학습의 결과가 수렴이 안되고 진동을 하게 될 수도 있습니다. 사람마다 또는 학습하는 분야마다 최적의 학습 진도율이 다르듯이 학습진도율을 학습하고자 하는 대상이나 망에 따라 적절하게 조절해야 합니다.
  2. Cost function - 일반적으로 대게 최소 자승법이나 cross-entropy함수를 사용합니다.
  3. Regularization parameter - overfitting의 문제를 피하기 위하 L1, L2 정규화 방법을 사용할 수 있으며, 거기서 사용하는 일반화 변수는 weight decay 속도를 조절하기 위한 용도로 사용할 수 있습니다.
  4. Mini - batch : Mini- batch 의 크기가 큰 경우는 병렬연산 구조를 사용할 때 효과적일 수 있으며, 크기가 작으면 더 많은 update를 할 수 있습니다.
  5. Training 반복 횟수 - 학습의 조기 종료(early stopping)을 결정하는 변수입니다.
  6. Hidden unit - hidden layer의 개수가 많아질수록 특정 훈련 데이터에 더 최적화 시킬 수 있습니다. 또한 hidden layer의 개수를 동일하게 유지하는 것이 같은 hidden layer의 개수에 뉴런의 개수를 가변적으로 한는 것보다 효과적입니다.
  7. 가중치 초기화 - 바이어스는 일반적으로 0으로 초기화 됩니다. 하지만 가중치의 경우는 초기화가 학습 결과에 큰 영향을 끼치기 때문에 주의가 필요합니다.

 

스크린샷 2020-12-31 오후 12.37.37.png

[ 일반 속성 및 은닉층 옵션 ]

 

① [결측포함] 사용안함(기본값) : 누락 된 값을 간격 입력에 대한 평균으로 대체 할 것인지, 누락 된 값을 클래스 입력에 대한 레벨로 처리할지 여부를 지정

② [입력표준화] 범위중앙(기본값) : 입력 변수를 표준화하는 데 사용되는 방법을 지정. 범위중앙/없음/Z스코어

③ [은닉층 ] 1(기본값) :  신경망에 포함 할 은닉층 수를 지정. 가능한 값의 범위는 0에서 10까지

④ [은닉층에 동일한 수의 뉴런 사용] 사용함(기본값) : 이 옵션을 선택하지 않으면 사용자 정의 은닉층 옵션 메뉴를 사용하여 각 숨겨진 레이어의 뉴런 수를 변경할 수 있음

⑤ [은닉층당 뉴런 수] : 50(기본값)

⑥ [은닉층 활성함수] 쌍곡탄젠트(기본값) : 가변/로지스틱/사인/소프트플러스/쌍곡탄젠트/지수/항등/ReLu

 

스크린샷 2020-12-31 오후 12.39.21.png

[ 타겟층 옵션 ]

① [직접연결] 사용안함(기본값) : 입력 레이어의 노드에서 출력 레이어의 노드로 직접 연결을 네트워크에 포함할지 여부를 지정

② [Interval 타겟 표준화] 범위 중앙(기본값) : 대상 변수를 표준화하는 데 사용되는 방법을 지정. 범위중앙/없음/Z스코어 중 선택

③ [Interval 타겟 오차함수] 정규(기본값) : 타겟 층 error 함수 지정 숨겨진 레이어가 없으면 정규 분포 사용. 감마/ 정규/ 포아송

④ [Interval 타겟 활성함수] (기본값) : 타겟 레이어 활성화 함수를 지정 사인/ 쌍곡탄젠트/ 항등

 

스크린샷 2020-12-31 오후 12.40.24.png

[ 공통 최적화 옵션 ]

 

[시도 횟수] 1(기본값) : 네트워크를 학습 할 횟수를 지정. 이것은 가중치에 대해 다른 초기 추정치를 사용하여 수행. 가능한 값의 범위는 1 - 64

[최대 반복] 300(기본값) : 각 시도에서 허용되는 최대 반복 횟수를 지정

[난수 시드] 12345(기본값) : 네트워크 가중치를 초기화하기 위해 난수를 생성하는 데 사용할 임의 시드를 지정

[L1 가중값 감소] 0(기본값) : L1 정규화를위한 weight decay 값 지정

[L2 가중값 감소] 0.1(기본값) : L2 정규화를위한 weight decay 값 지정

[조기중지수행] 사용함(기본값) : 모델이 과적합 되었을 때 분석 중지함

[정체] 5(기본값) : 조기중지 수행시 몇번동안 오차가 개선되지 않으면 분석을 중단할 지 회수 지정

 

 

 

 

Version history
Last update:
‎12-31-2020 12:07 AM
Updated by:
Contributors

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Article Labels
Article Tags