본 내용은 과학기술정보통신부, 정보통신기획평가원의 'SW중심대학'의 결과물 강의를 보고 공부한 내용을 정리한 것입니다.
해당 게시물과 다음 게시글을 함께 보면 이해가 편리할 것임
📍인공신경망(ANN,Artificial Neural Network)
- 인간의 두뇌를 구성하는 신경세포인 뉴런의 연결 구조를 흉내 내서 만든 머신러닝 모델
- 뉴런은 수상돌기로부터 입력받는 신호의 총합이 일정 값 이상(역치)이 되면 축삭돌기로 신호를 전달하는 구조를 가짐
(역치 이상이 아니면 신호 X)
👉 이 개념을 컴퓨터(프로그래밍)에 접목 시켜 보자!
📍 TLU (Threshold Logic Unit)
- 1943년 워렌 맥컬록과 월터 피츠는 뉴런을 모델로 한 인공뉴런 TLU를 제안
- 뉴런의 수상돌기처럼 외부로부터 신호들을 입력받아 그 총합을 구하는 부분과, 입력 신호들의 총합이 어느 임계값 이상일 경우에만 신호를 출력하는 부분으로 구성
🔍 활성화 함수
- 입력 신호들의 총합을 임계값과 비교한 뒤 출력을 결정하는 함수
- 임계값과 비교해 0과 1로 구분
= 임력 신호의 총합이 임계값보다 크면 1, 아니면 0을 출력
🔍 인공뉴런 TLU의 개념
- 입력값 X1과 X2를 더한 값이 임계값 0보다 같거나 크면 출력값 Y를 1로 출력, 0보다 작으면 0으로 출력

💡 OR(논리합)과 (AND)논리곱의 연산
- OR :
- OR은 입력받은 두 진리값 중 하나라도 참이면 결과를 참으로 계산하는 연산
- 입력받은 두 진리값이
모두 거짓일 때 = 거짓
- AND :
- AND는 입력받은 두 진리값 중 하나라도 거짓이면 결과를 거짓으로 계산하는 연산
- 입력받은 두 진리값이
모두 참

🔍 TLU의 논리연산 구현
-
TLU를 활용하면 논리연산인 논리합(OR)과 논리곱(AND)를 구현할 수 있음.
-
참 또는 거짓의 두 진리값을 입력받아 새로운 진리값(0/1)을 계산
-
TLU는 활성화 함수의 임계값θ을 어떤 값으로 정하느냐에 따라 구현하는 논리 연산이 결정됨
- 임계값θ을 0.5로 하면?
X1 + X2 >= 0.5 이면 출력값 Y는 1(참)
X1 + X2 < 0.5 이면 출력값 Y는 0(거짓)
임계값θ 를 적당한 값으로 지정하는게 중요
임계값θ = 하이퍼파라미터!
출력값 Y = 논리 연산 결과
📍 퍼셉트론
- TLU를 기반으로 하며, 가중치(Weight)라는 개념을 추가함
- 각 입력값에 고유한 가중치를 부여하고, 입력값에 가중치를 곱한 값의 총합을 임계값과 비교해 출력값을 결정
(총합을 활성화함수로 넘기고 θ보다 큰지 작은지 결정해서 출력값 결정해준 다는 것)
👉 가중치가 클수록 결과에 큰 영향
- 임계값은 0으로 정해 놓고, 가중치를 적절히 선택해 논리합 또는 논리곱을 결정
👉 퍼셉트론으로 구성된 인공신경망에서 학습이란 입력의 가중치를 결정하는 작업임
🔍 퍼셉트론 동작 원리
- 입력값에 가중치를 곱한 값들의 총합이 0 이상이면 Y를 1, 아니면 0

(EX. W0= -10이면 AND 연산이 됨)
💡 퍼셉트론은 배타적 논리합(XOR) 구현 불가능
배타적 논리합(XOR) : 두 입력값이 서로 다를 때만 참을 갖는 논리연산

🔍 다층 퍼셉트론(MLP, Multi Layer Perceptron)
- 퍼셉트론의 입력계층과 출력계층 사이에 은닉계층을 추가한 것
- 단층 퍼셉트론으로는 해결하지 못한 배타적 논리합의 연산을 구현 가능!


퍼셉트론을 중복해서 사용했더니 XOR 구현 성공!
하지만 은닉계층의 가중치를 학습시킬 방법이 X
(수치미분방식은 너무 많은 시간이 걸려서 신경망 적용 X)
👉 오차 역전파 알고리즘으로 퍼셉트론 한계 극복
🔍 오차 역전파 알고리즘

💡 Diminishing Gradient(사라지는 경사도)문제
- 여러 계층을 역으로 올라가다보니 전파되는 오차 값이 현저히 작아져 학습 효과가 사라짐
👉 은닉계층 개수가 늘어날 때 큰 단점
(심층신경망- 은닉계층이 2개 이상인 인공신경망도)
👉 드롭아웃 기법으로 극복