CNTK-신경망 (NN) 개념
이 장에서는 CNTK와 관련된 신경망의 개념을 다룹니다.
우리가 알고 있듯이 신경망을 만드는 데 여러 층의 뉴런이 사용됩니다. 그러나 CNTK에서 NN의 레이어를 모델링하는 방법에 대한 의문이 생깁니다. 계층 모듈에 정의 된 계층 함수의 도움으로 수행 할 수 있습니다.
레이어 기능
실제로 CNTK에서 레이어 작업은 고유 한 기능 프로그래밍 느낌이 있습니다. 레이어 함수는 일반 함수처럼 보이며 미리 정의 된 매개 변수 집합을 사용하여 수학 함수를 생성합니다. 레이어 기능을 사용하여 가장 기본적인 레이어 유형 인 Dense를 만드는 방법을 살펴 보겠습니다.
예
다음 기본 단계를 통해 가장 기본적인 레이어 유형을 만들 수 있습니다.
Step 1 − 먼저 CNTK의 레이어 패키지에서 Dense 레이어 함수를 가져와야합니다.
from cntk.layers import Dense
Step 2 − 다음으로 CNTK 루트 패키지에서 input_variable 함수를 가져와야합니다.
from cntk import input_variable
Step 3− 이제 input_variable 함수를 사용하여 새로운 입력 변수를 생성해야합니다. 크기도 제공해야합니다.
feature = input_variable(100)
Step 4 − 마지막으로 Dense 함수를 사용하여 원하는 뉴런 수를 제공하여 새 레이어를 생성합니다.
layer = Dense(40)(feature)
이제 구성된 Dense 레이어 함수를 호출하여 Dense 레이어를 입력에 연결할 수 있습니다.
완전한 구현 예
from cntk.layers import Dense
from cntk import input_variable
feature= input_variable(100)
layer = Dense(40)(feature)
레이어 사용자 정의
우리가 보았 듯이 CNTK는 NN 구축을위한 꽤 좋은 기본값 세트를 제공합니다. 기반activation우리가 선택한 기능 및 기타 설정에 따라 NN의 동작과 성능이 다릅니다. 또 다른 매우 유용한 형태소 분석 알고리즘입니다. 그 이유는 무엇을 구성 할 수 있는지 이해하는 것이 좋습니다.
고밀도 레이어를 구성하는 단계
NN의 각 레이어에는 고유 한 구성 옵션이 있으며 Dense 레이어에 대해 이야기 할 때 정의 할 중요한 설정은 다음과 같습니다.
shape − 이름에서 알 수 있듯이 레이어의 출력 모양을 정의하여 해당 레이어의 뉴런 수를 추가로 결정합니다.
activation − 해당 레이어의 활성화 기능을 정의하여 입력 데이터를 변환 할 수 있습니다.
init− 해당 레이어의 초기화 기능을 정의합니다. NN 훈련을 시작할 때 레이어의 매개 변수를 초기화합니다.
구성 할 수있는 단계를 살펴 보겠습니다. Dense 레이어 −
Step1 − 먼저 Dense CNTK의 레이어 패키지에서 레이어 기능.
from cntk.layers import Dense
Step2 − 다음으로 CNTK ops 패키지에서 sigmoid operator. 활성화 기능으로 구성하는 데 사용됩니다.
from cntk.ops import sigmoid
Step3 − 이제 이니셜 라이저 패키지에서 glorot_uniform 이니셜 라이저.
from cntk.initializer import glorot_uniform
Step4 − 마지막으로 Dense 함수를 사용하여 뉴런의 수를 첫 번째 인수로 제공하여 새 레이어를 생성합니다. 또한sigmoid 연산자 activation 기능과 glorot_uniform 로 init 레이어에 대한 기능.
layer = Dense(50, activation = sigmoid, init = glorot_uniform)
완전한 구현 예-
from cntk.layers import Dense
from cntk.ops import sigmoid
from cntk.initializer import glorot_uniform
layer = Dense(50, activation = sigmoid, init = glorot_uniform)
매개 변수 최적화
지금까지 NN의 구조를 만드는 방법과 다양한 설정을 구성하는 방법을 살펴 보았습니다. 여기에서 NN의 매개 변수를 최적화하는 방법을 살펴 보겠습니다. 즉, 두 구성 요소의 조합의 도움으로learners 과 trainers, 우리는 NN의 매개 변수를 최적화 할 수 있습니다.
트레이너 구성 요소
NN의 매개 변수를 최적화하는 데 사용되는 첫 번째 구성 요소는 trainer구성 요소. 기본적으로 역 전파 프로세스를 구현합니다. 작동에 대해 이야기하면 예측을 얻기 위해 NN을 통해 데이터를 전달합니다.
그 후 NN의 매개 변수에 대한 새 값을 얻기 위해 학습 자라는 다른 구성 요소를 사용합니다. 새 값을 얻으면 이러한 새 값을 적용하고 종료 기준이 충족 될 때까지 프로세스를 반복합니다.
학습자 구성 요소
NN의 매개 변수를 최적화하는 데 사용되는 두 번째 구성 요소는 learner 기본적으로 경사 하강 법 알고리즘을 수행하는 구성 요소입니다.
CNTK 라이브러리에 포함 된 학습자
다음은 CNTK 라이브러리에 포함 된 흥미로운 학습자 목록입니다.
Stochastic Gradient Descent (SGD) −이 학습자는 추가 사항없이 기본 확률 적 경사 하강 법을 나타냅니다.
Momentum Stochastic Gradient Descent (MomentumSGD) − SGD를 사용하여이 학습자는 모멘텀을 적용하여 극댓값 문제를 극복합니다.
RMSProp −이 학습자는 하강 률을 제어하기 위해 감소하는 학습률을 사용합니다.
Adam −이 학습자는 시간이 지남에 따라 하강 속도를 줄이기 위해 감쇠 운동량을 사용합니다.
Adagrad −이 학습자는 자주 발생하는 기능과 드물게 발생하는 기능에 대해 서로 다른 학습률을 사용합니다.