개요
- 구글
- Tensorflow - keras 병합
- kera는 text 처리에 유용한 라이브러리였음
- BERT(구글꺼)
- 메타
이미지 쪽으로 특화된 라이브러리를 개발 시작 = pytorch
그런데 이제는 text 처리를 pytorch에도 쓰고 keras를 이미지 처리에도 쓰는 둘다 괜찮은 라이브러리임 - 미세조정
딥러닝 : 미리 만들어놓은 어느정도의 모델들을 미세 조정(미세 학습)하여 Fine Tuning 본인들에게 맞춤하는 영역으로 가고 있음
ex ) Ko-Bert 미세 조정은 pytorch로 함 - 그래서 pytorch 진형 tensorflow 진형 구분이 어렵다. - tensorflow, keras 위주로 실습하겠다. 다만 pytorch도 사용할 수 있게끔 준비하자.
인공지능, 머신러닝 , 딥러닝
- 인공지능 : 지적작업에 필요한 능력(지능)을 사람이 아닌 기계가 가질 수 있도록 하는 것, 인간의 지적 능력을 컴퓨터를 통해 구현하는 기술의 총칭
- 머신러닝 : 주어진 데이터를 기반으로 학습하여 패턴을 파악하고 이를 이용하여 예측하거나 분류를 수행하는 것
- 딥러닝 : 머신러닝 알고리즘 중에 인공 신경망 구조를 기반으로 학습하는 방법
인공 신경망(ANN : Artificial Neural Network)
- 뇌에 있는 생물학적 뉴런의 네트워크에서 영감을 받은 머신러닝 모델
- 딥러닝의 핵심 - 경사하강법, 오차역전파
- 딥러닝의 탄생 및 발전
- 연결주의자(신경세포모델, 1940) - 임의의 이진수를 계산하는(AND, OR, NOT) 전기회로 제시, 설계된 동작만을 수행, 변경 불가
- 단층 퍼셉트론(1958) - 학습 방법 제시(오차를 줄이도록 연결 강도 변경)했으나 구현 못함, XOR 해결 못함
- 다층 퍼셉트론 - 은닉층을 제시, XOR를 해결, 단 오류를 줄이면서 학습하는 기능 구현 못함
- 오차역전파(1986) - 다층 퍼셉트론의 학습 방법 제시, 단점) 사라지는 경사
딥러닝의 작동원리
- 머신러닝이 많은 입력과 타깃(traget)의 샘플을 관찰하면서 입력(예 : 이미지)을 타깃(예: 고양이 레이블)에 매핑(mapping)하는 것임을 알았음
- 다른 머신러닝 알고리즘들처럼 딥러닝 역시 데이터를 입력받아 예측을 출력
- 딥러닝은 이런 입력-타깃 매핑을 간단한 데이터 변환기(층)를 많이 연결하여 수행하는 것
- 층에서 입력 데이터가 처리되는 상세 내용은 일련의 숫자로 이루어진 층의 가중치(weight)에 저장되어 있음
- 기술적으로 말하면 어떤 층에서 일어나는 변환은 그 층의 가중치를 파라미터(parameter)로 가지는 함수로 표현됨(가중치를 그 층의 파라미터라고도 부름)
- 학습은 주어진 입력을 정확한 타깃에 매핑하기 위해 신경망의 모든 층에 있는 가중치 값을 찾는 것을 의미함
- X = 입력, W = 가중치, A = TARGET(정답)
저 ? (가중치 = W)를 어떻게 알아내냐? 가 DL의 문제임.
여러 층으로 반복 해서 오차가 작아지도록 W를 변환시켜서 A에 가깝게 변환시키는 것을 학습이라 한다.
심층신경망(DEEP LEARNING)의 기본 구조
- 레이어(LAYER) : 여러 노드가 일렬로 존재하는 가상의 네모박스
- 각각의 노드는 다른 레이어의 노드와 연결되어 영향을 주는데, 영향 범위를 다르게 하기 위해서 가중치(W)라는 변수가 존재.
- 노드의 정보는 가중치와 곱해져서 다음 레이어의 노드로 전파
- 딥러닝은 머신러닝 알고리즘이라는 기본 개념 안에 뇌가 사물을 이해하는 과정(CNN), 뇌가 문맥을 이해하는 과정(RNN) 등, 각 상황에 따라 뇌가 이해하는 과정을 형상화한 세부적인 딥러닝 알고리즘을 가지고 있음
딥러닝 이름의 유래
- x라는 입력이 들어왔을 때, 결과값을 구하기 위해서는 h(g(f(x))를 계산해야하고, 그 계산 과정이 함수 안의 함수로 깊게 이어져있기 때문에, 딥러닝이라는 별칭이 생긴 것
단층 퍼셉트론(Single Layer Perceptron)
퍼셉트론 - 학습할수 있는 모델
- 신경망은 퍼셉트론 알고리즘에서 출발
- 뉴런 하나로 여러개의 입력을 받아 하나의 신호(AND 연산, 또는 OR 연산을 출력하는 이론)
- 가장 기초가 되는 인공신경망 구조 중 하나
- 1957, 프랑크 로젠블라트 TLU(threshold logic unit)이라는 뉴런을 기반으로 함
- 퍼셉트론 작동 원리
예 : 두개의 입력이 있을 때 하나의 뉴런으로 두개의 입력을 계산한 뒤, 최종 결과 값으로 0또는 1출력하는 모델- 퍼셉트론은 X와 가중치 w를 곱한 값을 모두 더하여 하나의 값(y)로 만들어낸 후, 이를 임계값(threshold)와 비교하여 0또는 1을 출력함
- 활성화 함수 : 신경망에서 만들어진 값을 적절한 출력값으로 변환시키는 함수
- 가중치 = 연결강도
퍼셉트론 작동
- 여러개의 신호를 입력으로 받아 하나의 값을 출력
- x는 입력, y는 출력, w는 가중치
- x와 가중치 w를 곱한 값을 모두 더하여 하나의 값(y)로 만들어냄
- 이 때, 임계값(threshold)와 비교하여 크면 1, 그렇지 않으면 0을 출력
- 활성화 함수(ActivationFunction)
- 위에서 사용한 것은 계단 함수
- AND 연산을 하는 퍼셉트론의 예
- 편향값(bias)은 모델이 좀 더 쉽고 빠르게 목적을 달성하는데 도움을 줌
- 시그마(z)의 값은 뉴런의 두번째 단계인 활성화 함수(a, activation function)의 입력값으로 들어감
- 퍼셉트론은 스텝함수라는 다음과 같은 활성화 함수를 사용함
- AND 연산의 예로 함
y = x1_w1 + x2_w2 + bias
y≥ 0 일 떄 a(y) = 1 , y<0 일 때 a(y) = 0- X1=0, X2=0일 때 y = 0 + 0 -1 = -1 a(z) = 0
- X1=0, X2=1일 때 y = 0 + 0.6 -1 = -0.4 a(z) = 0
- X1=1, X2=0일 때 y = 0.6 + 0 -1= -0.4 a(z) = 0
- X1=1, X2=1일 때 y = 0.6 + 0.6 -1= 0.2 a(z) = 1
- 가중치 갱신
- 각 입력 노드마다 임의로 가중치를 할당한 후, 출력값(예측값)이 실제값과 다르면 가중치를 갱ㅇ신한다.
- 실제값이 1인데, 출력이 0이면 다음 계산에서 출력이 증가하는 방향으로 가중치를 갱신, 가중치 갱신 과정을 모든 데이터가 실제값으로 동일한 출력을 내보낼 때까지 반복한다.
- 가중치 갱신
- 하나의 퍼셉트론으로 AND/OR 연산을 할 수 있었던 이유
퍼셉트론의 목표 - 결국 퍼셉트론의 목표는 학습 데이터에 의해 정확한 선형의 결정 경계를 찾는 것.
단층 퍼셉트론의 한계
- XOR 연산이 불가능함(두 개의 의사 결정선이 필요하므로)
- 다층 퍼셉트론의 대두
- 단층 퍼셉트론 학습이 종료되기위해서는 모든 출력이 실제값과 일치해야한다.
- 그러나 반드시 100% 정확하게 분류를 한다는 것은 현실성이 부족한 조건이다.
- 단층 퍼셉트론은 정확한 선형 결정 경계를 찾는 문제에 대한 모형이므로, 비선형 데이터에 대해서는 처리가 불가능하다.
- 배타적 논리합(EXCLUSIVE OR) XOR 연산은 선형으로 분리할 수 없기 때문에 수행이 불가능하다.
다층 퍼셉트론
퍼셉트론이 XOR 문제를 풀게 한 방법
- 다층 퍼셉트론으로 XOR을 구할 수 있는 방법은 여러가지가 있지만 다음 표와 같이 OR회로와 NAND 회로, 그리고 AND 회로를 조합한다.
- 이 진리표를 살펴보면 X OR Y의 결과가 0, 1, 1, 1이며 XNAND y의 결과가 1, 1, 1, 0이므로 이 두 출력의 AND가 0, 1, 1, 0으로 XOR 임을 알 수 있다.
- 다층 구조의 퍼셉트론은 더 많은 수의 연결이 더 많은 단계로 연결되어 복잡한 동작을 할 수 있음
- 적절한 연결 강도를 부여하면 단순한 모델이 할 수 없었던 XOR 문제도 풀이 가능
- 이 방법은 다층 퍼셉트론에서 최종 은닉층과 출력의 연결에만 적용
- 층을 쌓아 만든 퍼셉트론이 분명 다양한 기능을 수행할 수 있지만, 오류를 줄이고 원하는 기능을 학습할 수 있도록 하는 방법이 없다면 이 모델을 훈련시킬 수 없음
- 중간에 층을 두고 연결하면 다음과 같은 구조의 다층 퍼셉트론(mult-layer perception)을 만들 수 있을 것
- 가중치는 입력층에 있는 n개의 노드가 발생하는 신호를 은닉층에 있는 m개의 노드로 연결하는 가중치 행렬 W에 의해 전달
- 은닉층의 노드들이 발생시키는 신호는 또 다른 연결강도 벡터 Wh0에 의해 출력으로 연결
심층 신경망(DNN : Deep Neural NetWork)
- 다층 퍼셉트론 구조에서 특히 은닉층이 2개 이상일 경우를 심층 신경망(deep neural network)라고 한다.
- 심층 신경망 구조를 통해서 학습을 수행하는 것을 심층학습, 즉 딥러닝(deep learning)이라고 한다.
- 입력층과 출력층 외에 1개 이상의 TLU(Threshold Logic unit) 층으로 구성된다.
심층신경망 구조 이해
- 입력층
- 입력 데이터가 그대로 통과하는 중이므로, 입력층 노드의 개수는 입력 특성의 개수와 동일하게 자동으로 지정된다.
- 출력층
- 출력은 클래스 분류 결과이므로, 출력층 노드의 개수는 분류 대상 클래스의 개수와 동일하게 자동으로 지정된다.
- 은닉층
- 은닉층 1개에 존재하는 노드의 개수는 경험적으로 100또는 200을 기준으로 상황에 따라 조절한다.
- 은닉층들의 층 수가 늘어난다고 해서 반드시 학습효과가 향상 되는 것은 아니며, 1~2개 층을 배치한 것만으로도 최대 성능을 나타내는 경우가 흔하다.
- 은닉층의 모든 노드들은 하위층의 모든 입력을 받는다.
- 은닉층의 모든 노드들은 상위층의 모든 입력으로 출력을 내보낸다.
- 은닉층에도 편향노드가 존재한다.
- 은닉층의 모든 노드들 역시 가중치가 할당되고 갱신도니다.
다층 퍼셉트론과 학습
오차계산방법
- 학습이란 출력값과 정답을 비교하여 오차를 구하고 그 오차를 줄이도록 인공지능 모델을 바꾸어나가는 과정
- 데이터와 모델의 특징에 따라 적합한 오차 공식을 적용하는 것이 필요
- 이항 교차 엔트로피(binary cross entropy) 계산법 : 오차를 0 또는 특정값으로 나누어 부여
- 카테고리컬 크로스 엔트로피(categorical cross entropy) 계산법 : 여러 값 중 하나를 예측하는 모델에서, 정답이 아닌 값을 높은 확률로 예측하면 큰 오차값, 낮은 확률로 정답이 아닌 값을 예측하면 낮은 오차값을 부여하는 방식으로 클래스마다 다르게 오차값을 부여
- 평균 제곱오차(mean squared error) 계산법 : 회귀 모델에서 특정값을 예측 하는 경우
결과층이 3개 이상이면 카테고리컬 크로스 엔트로피가 적합하다.
오차 줄이기
- 인공 신경망의 핵심으로 오차를 줄이기 위해서는 각 뉴런에 전달하는 신호의 세기를 조절해야함
- 전달하는 신호의 세기를 조절하는 방법 = 가중치의 값을 수정하는 것
- 가중치 수정방법
- 경사하강법(Gradient Decenet) 계산법 : 오차 그래프(가중치 vs 오차)에서 오차를 최소로 하는 가중치 값으로 가중치를 이동, 즉각 지점의 기울기(미분값)을 보고 기울기가 줄어드는 족으로 가중치를 이동시킴
- 옵티마이저 : 경사하강법에 따라 가중치를 이동시킬 때 얼마만큼 이동시키는 것이 가장 좋은 것인지 판별하는 방법(Adam, SGD 등이 있음) = 부분 최소값에 빠지지 않도록(다차원 함수 예시) 관성(learning rate 옵션을 얼마로 줄 것인가)을 주는 방식
- 오차역전파법(BackProPagation, ChainRule) : 오차가 있으면 마지막부터 처음까지 되돌아가면서 경사하강법을 사용하여 각각의 가중치 값을 수정해나감. 뒤로 돌아가면서 (손실함수 = loss 함수)를 줄이도록 노력함
- tensorflow 용어
1) 일정한 숫자들이 어떤 방식에 의해 집단으로 늘어져 있는것 = 배열 = array
2) 배열의 3차원 부터는 tensor라고 함
3) 이 tensor가 입력층, 은닉층, 출력층으로 흘러간다 = tensorflow
다층 퍼셉트론의 학습 - 오차를 줄이도록 연결강도(w) 수정
- 인공 신경망에서 연결강도를 조정해 오차를 줄임
- 오차 곡면의 기울기를 연결강도에 대해 구한 뒤에, 이 기울기를 따라 내려가는 경사하강법을 사용하여 구현
- x가 연결강도 w로 출력 노드에 연결되어 있다고 가정(입력이 한개라고 가정)
- 출력 노드는 x를 비롯한 여러 노드에서 신호를 수신하여 합산하는 부분과 이 값을 활성화 함수에 넣어 최종 출력을 결정하는 부분으로 나뉨
- 출력과 정답(목표값)의 차이를 제곱하여 오차를 구하는 일반적인 방법을 사용 가능
- 출력값 = y, 오차 = E, 정답 = t, w = 가중치, x = node
- 오차를 연결강도 w에 대해 편미분
- 기울기를 이용하여 연결강도를 수정
- 활성화 함수의 미분만 안다면 입력 x, 출력 y, 목표값 t를 이용하여 간단히 계산할 수 있음
- 계단함수는 미분이 불가능한 지점이 있고, 미분이 되는 곳에서도 미분치가 언제나 0임
- 이 방법을 위해서는 미분이 가능한 새로운 활성화 함수가 필요
- 시그모이드 혹은 로지스틱 함수를 활성화 함수로 도입
- 이 함수는 미분이 가능하다는 장점과 함께, 이 함수의 미분은 다음과 같이 원래 함수를 이용하여 표현할 수 있는 장점이 있다.
- 조금 전 구했던 오차의 기울기에서 활성화 함수의 미분으로 표시된 부분을 출력값 y로 표현할 수 있음
- 미분 값이 0에 가까워진다 = 기울기가 0에 가까워진다 = 기울기가 사라진다 = 경사하강법은 기울기가 사라지는 일이 생기더라( = 경사하강법의 문제점), 이를 해결해야 인공지능 딥러닝이 가능해진다(2000년대에 해결)
딥러닝의 학습과 활성화 함수
딥러닝 학습의 목표
- 모델에 입력값을 넣었을 때, 출력값이 최대한 정답과 일치하게 하는 것
- 보통, 최초 딥러닝 모델의 매개변수(가중치, 편향)을 무작위로 부여한 후, 반복학습을 통해 모델의 출력값을 최대한 정답과 일치하도록 매개변수를 조금씩 조정함. 이러한 조정방법으로 순전파 기법과 역전파 기법이 있음.
- 역전파 기법(BackPropagation 기법)
- 신경망 학습 방법
- 다층 퍼셉트론 학습을 위해서 오차를 감소시키는 알고리즘
- 손실함수의 값을 최저로 하기 위해 매개변수를 미분하고, 학습률을 적용하여 매스텝마다 변경함
- 정방향(입력층부터 시작하여 출력층까지)으로 각층마다 출력을 계산한다.
- 역방향(출력층부터 시작하여 입력층까지)으로 각 층마다 각각의 연결이 오차에 기여한 정도를 계산한다.
- 계산된 오차가 감소하도록 각각의 연결마다 오차에 기여한만큼 가중치를 갱신한다.
- 역전파(Backpropagation) 원리
- 체인룰(chain rule)이라는 합성함수 미분 공식을 사용
- 순전파 기법(forward propagation)
- 입력의 신호가 연결강도로 증폭되고 활성화 함수를 통과하여 출력 노드로 전달되는 과정
- 학습 과정은 연결강도를 수정하는 것이기 때문에, 출력단의 오차가 역방향으로 활성화 함수의 미분함수를 거친뒤에 연결강도에 의해 증폭되어 입력단까지 전달되는 과정으로, 이러한 신경망 학습 방법을 오차 역전파 알고리즘이라함
- 역전파 알고리즘에 대한 직관적 이해
역전파 알고리즘을 이용한 연결강도 갱신 학습법을 이해하기 위해 아래와 같이 순전파 경로와 역전파 경로를 모두 표시한 연결망
대부분의 딥러닝 라이브러리는 자동 미분(auto-dff) 기능을 지원하므로 미분 구현에 대한 고민보다는 데이터 또는 모델에 집중할 것. “신경망의 가중치는 역전파를 통해 업데이트 된다.
다층 퍼셉트론과 학습(오차 역전파)
- 역전파 기법 : 다층 퍼셉트론 학습을 위해서 오차를 감소시키는 알고리즘
- 순전파로 쭉 가서 25라는 출력을 얻게됨
- 실제값과 예측값(y_hat)을 비교했더니 0.5만큼의 오차가 있더라
- 역전파 실행
- 다시 뒤로 돌아가면서 각 기여도(공헌도)에 따라 오차를 분배해준다.
- 시작 입력값에 도착한 후 전달된 기여도 값을 기반으로 가중치를 갱신한다.
- 수정된 가중치로 다시 은닉층 -> 출력층 순으로 순전파 가중치를 갱신한다.
- 2~6 반복
딥러닝의 학습과 손실함수, 최적화
손실함수
- 손실함수란 출력값과 정답의 차이를 계산하는 기능을 수행하는 함수. 회귀의 경우에는 평균제곱오차, 분류의 경우에는 크로스 엔트로피 함수를 손실함수로 사용함
최적화(Optimization)
- 매개변수(가중치, 편향)을 조절해서 손실함수의 값을 최저로 만드는 과정을 최적화라고 하며 최적화 과정은 역전파 과정을 통해 딥러닝 모델의 매개변수를 최적화함
딥러닝 최적화 방법
- 손실함수를 최소화하는 매개변수 찾는법
- 배치 경사하강법 : 산에서 사람이 내려갈 때 내려가는 방향으로 한걸음 내딛는 방식
- SGD : 1번만 확률적으로 발걸음을 내딛는 방식
- 미니 배치 : 적절한 사이즈의 발걸음을 내딛는 방식
- 모멘텀과 학습률 : 경사 하강법의 문제와 개선/최적화 기법
- 지역 최적값에 빠져 학습이 중단되는 경우를 막기위해서 개발됨
- 단순히 1차 미분만으로 정직하게 최적화를 진행하다보면 당연히 근처의 로컬 미니멈으로 딥러닝 모델이 학습됨
- 이를 개선하기 위한 방안으로 물리학을 응용한 방법인 모멘텀(MOMENTUM)을 도입
- 마치 공을 언덕에서 굴렸을 때 위치에너지와 운동에너지의 영향으로 공이 가던 방향으로 힘을 받아 최초 로컬 미니멈에 머무르지 않고, 더 낮은 로컬 미니멈까지 공이 굴러갈 수 있다는 이론
- **현재 위치에서 계산된 기울기만으로 이동할 방향을 정의하는 것이 아니라, 지금까지 기울기를 따라 이동한 경로를 누적한 모멘텀(M)을 정의하고 이를 이용해 가중치를 갱신
- 즉 이전의 이동과 현재의 기울기를 함께 고려하여 큰 학습률을 사용해도 원래의 경사하강법 보다 최적해에 잘 근접함
- Adam(Adaptive momentum estimation) : 가장 인기 있는 최적화 기법, 모멘텀과 RMSProb 혼합
- 매개 변수 new = 매개변수 old + 이동변수
- 이동변수 = 모멘텀 - 학습률 * dl/dw
- 모멘텀 = 모멘텀 조정률 * 이동변수 딥러닝 최적화 방법
다층 퍼셉트론과 활성화 함수
- 학습률과 모멘텀 조정
- Adagrad 각 매개변수에 각기 다른 학습률을 적용, 잦은 변화가 발생하는 가중치는 학습률이 작게 설정되고, 변화가 적은 가중치는 학습률이 높게 설정됨. 자연어 처리(희소행렬) 등에서 효율적으로 사용됨
- Adam-Adagrad의 학습률 자동 조정과 모멘텀의 효율적인 매개변수 변경 알고리즘을 조합, 최근 가장 많이 사용됨
- 활성화 함수란?
- 전달 받은 신호를 다음 뉴런에 전달할지 말지를 결정하는 함수
- 단층 퍼셉트론의 활성화 함수 : 계단함수(스텝함수)
- 다층 퍼셉트론 및 딥러닝의 활성화 함수 : 비선형함수
- 다층 퍼셉트론에서의 활성화 함수 선택
- 단층 퍼셉트론에서 적용했던 계단 함수는 실제 경사를 개선할 수 없기 때문에 활용되지 않는다.(미분할 수 없기에)
- 오류 역전파를 위해서 미분 가능한 함수를 활성화 함수로 사용하며, 일반적으로 고려되는 함수들은 다음과 같다.
- 시그모이드(로지스틱) 함수 : 사라지는 경사, 끊임없이 기울기가 0으로 수렴하는 문제(= 미분 불가), 돌릴 수록 기울기가 사라지다보니 딥러닝이 특정 수준이상으로 발전 불가
- 쌍곡 탄젠트 함수
- ReLU 함수
- 소프트 맥스 함수(출력층 전용으로 사용)
- 시그모이드(로지스틱) 함수
- 미분이 가능하고 0과 1사이의 출력값을 가지는 대표적인 활성화 함수 중 하나
- 깊은 은닉층의 구조에서 출력층과 거리가 멀어질 수록 학습 효과가 나빠진다(vanishing gradient) = 모델 성능 향상이 제한적이더라.
- 쌍곡 탄젠트(tanh) 함수
- 출력값이 -1과 1 사이인 시그모이드 곡선 형태의 함수이다.
- 출력에서 멀리 떨어져있는 은닉층에서 학습효과의 감쇄현상이 다소 완화된다.
- ReLU(Rectified Linear Unit) 함수
- 값이 0이하인 경우에 일괄적으로 0을 적용하는 연속함수로써, 계산속도가 빠르다는 장점이 있다.
- 일반적으로 시그모이드 형태보다 학습효과가 우수하다고 알려져있다.
- 각진 부분 이전에는 기울기가 0을 미분하면 미분이 불가능한거 아닌가? = 성능이 너무 좋아서 0을 미분하면 그냥 0이라고 하자라는 가정하에 욱여넣었다고함.
- 소프트 맥스 함수
- 일반적으로 출력층에서 사용되는 활성화 함수이다.
- 은닉층의 활성화 함수는 0, 1만 출력하면 되지만 출력층은 각 class에 속한 확률을 출력해줘야 하기 때문에 소프트 맥스 함수를 사용한다.
- 다만 회귀인 경우(집값 예측) 활성화함수를 사용하지 않는다. 활성화 함수는 0~1 사이 값을 예측하는 것이고 회귀는 집(집가격)을 원하기 때문
- 또한 결과가 1이될 확률을 출력해야하는(심장질환 판별)의 경우 소프트 맥스가 아니라 sigmoid 함수가 필요하다.
- 함수 수식의 분모가 모든 클래스의 출력등르 반영한 형태이고 분자는 특정 클래스의 출력에 해당하기 때문에, 출력층의 전체 노드에 대해 하나의 활성화 함수로 적용한다.
신경망 설계 도구 : Keras, tensorflow의 클래스, 메소드
오차 역전파를 통한 신경망 학습 방법의 구현
신호를 앞으로 전달
오차 계산 후 연결 강도 수정
다층 구조의 신경망을 쉽게 정의하고 사용할 수 있는 다양한 라이브러리가 등장함
import tensorflow as tf
from tensorflow import keras
순차적 신호 전달 모델 - sequential()
밀집계층 - Dense(), 이전 단계의 층이 가지는 신경 세포 노드와 빠짐없이 연결되는 은닉층, 노드의 개수와 활성화 함수를 지정
Dense(unit = 6, activation = 'sigmoid')
오차를 줄이는 최적화 방법 - complie(), 가중치 최적화 방법, 학습률, 손실함수 등을 지정
모델 훈련 - fit(), 학습횟수(epoch 지정)
'머신러닝 및 딥러닝 > 딥러닝' 카테고리의 다른 글
객체탐지와 합성곱 신경망 (0) | 2023.02.27 |
---|---|
합성곱 신경망 데이터 증강(ImageDataGenerator 사용하기) (0) | 2023.02.23 |
전이학습 이론 (0) | 2023.02.23 |
합성곱 신경망 이론 (0) | 2023.02.22 |
딥러닝 실습(모델세부설정) (0) | 2023.02.22 |