slide-image

딥러닝

[2019-1]

#03

 

딥러닝을 해보자~~

되게 오랜만에 해서 복습 차원의 내용이었다.

 

벡터화는 내부적으로 병렬으로 처리하라는 의미이다.

따라서 코드가 간결하고 길이가 짧으며, 속도가 빠르다.

또한 정규 수학 표현과 비슷하게 표현할 수 있다.

 

학습률 알파는 w를 근사하도록 하는 값으로, 

학습률에 따라서 학습시간이 달라진다. 

학습률을 너무 적게 설정하면 속도가 매우 느려져서 최소값을 구하기 힘들어진다.

반대로 학습률을 너무 크게 설정하면 최소값을 이탈할 위험이 있다.

 

CPU와 GPU에 대해서 이야기를 하자면, GPU는 하나 연산량이 사실 CU보다 느리지만 연산장치(ALU)을 많이 만들어서 연산 속도를 높이는 방법이다. 하지만 캐시가 없어서 ALU 하나의 연산 속도는 CPU보다 느리다.

그리고 폴리건의 양을 낮추면 정확도, 세밀함은 떨어지며, 반대로 높이면 세밀성은 높아진다.

예를 들어 그래픽으로 설명할 수 있다. 

왼쪽이 폴리건이 적을 때의 모습이다.

 

이 후에는 수식인데, 

파이썬으로 로지스틱 회귀를 표현하면 마지막 줄처럼 표시할 수 있다.

행렬로 표현하면 이렇게 된다.

b는 파이썬에서의 브로드 캐스팅으로 모양이 다른 배열들 간의 연산을 할 수 있도록 배열을 자동으로 변환해주는 것이다.

예를 들어, [1 2 3] + 100 = [101 102 103]이 된다.

편리하지만, 오류가 발생할 시에 오류 발생 부분을 정확히 파악할 수 없다.

따라서 차원(reshape)확인이 필요하다.

 

 

지금까지 배운 내용을 토대로 경사하강법을 벡터를 사용해서 수식으로 표현하면,

이렇게 된다. 설명은 저번 포스팅에 했던 것 같아서 패스.

 

 

인공신경망은 

그림으로 표현하면 이렇게 되는데, a밑의 숫자는 노드를 뜻한다. 그리고 위의 [i[들은 히든레이어의 층을 나타낸다. 

참고로 훈련세트는 (소괄호)로 표시하므로 헷갈리면 안된다.

 

x1(첫번째 인풋 노드)가 웨이트에 따라서 첫번째 층의 a1과 a2로 가는 것을 볼 수 있다. 

그 이후에 두 번째 층인 output layer에서 a로 가는 것을 알 수 있다.

 

이렇게 구성된 신경망은 2nn신경망이라고 하고, 입력값을 계산을 하면서 출력하는 과정에서 계속 w과 b를 구한다.

이 와중에서 예외 처리 문제와 시그모이드 flat 문제가 발생하는 것이고, 그걸 처리하는 방법을 배웠었다.

 

딥러닝과 관련되서 라이브러리와 프레임워크를 소개하자면, 케라스와 텐서플로우가 있다.

사실 텐서플로우는 구글에서 만든 머신러닝을 좀 더 쉽고 직관적으로 할 수 있도록 하는 프레임워크이고, 케라스는 텐서플로우 위에서 돌아가는 다른 프레임워크로 볼 수 있다.  (ANN #01 뒷부분에 추가할 예정)

 

만약 케라스의 코드가 이렇다면,

from keras.models import Sequential
from keras.layers import Dense
model=Sequential()
model.add(Dense(1, input_dim=3, init='uniform', activation='relu'))

첫번째 인자가 출력 뉴런의 수고, input_dim이 3이라는 것은 입력의 차원, 입력 뉴런의 수가 3개라는 것이다.

 

init은 가중치 초기화 방법을 정하는 인자이며, uniform으로 하면 균일 분포로 가중치를 처리하고, normal으로 하면 가우시안 분포로 처리한다.

 

activation은 활성화 함수로, linear을 선택하면(디폴트 값), 별도 활성화 함수 없이 뉴런과 가중치의 계산 결과 그대로 출력한다. 선형 회귀에서 선택하는 방식이다. sigmoid는 시그모이드 함수로, 이진 분류 문제에서 주로 사용된다. softmax는 소프트맥스 함수로 셋 이상을 분류하는 다중 클래스 분류 문제에서 주로 사용된다. relu는 렐루함수로 은닉층에 주로 사용된다.

 

 

 

'EVI$I0N > 2019-1' 카테고리의 다른 글

[디지털포렌식] #03  (0) 2019.05.13
[와이어샤크] #03  (0) 2019.05.06
[웹보안] #03  (0) 2019.04.29
[딥러닝] #02  (0) 2019.04.08
[와이어샤크] #02  (0) 2019.04.06