* * 신경망 모델 * *
신경망 모델은 인간의 뉴런에서 본 따 옴.
----인간의 뉴런----
입력된 자극이 일정크기(임계자극OR역치) 이상일 때에만 활성화되어 다음 뉴런으로 신호를 전달함.
----신경망 모델----
신경망에서 인공뉴런도 가중치를 곱한 모든 입력의 합이 임계값 이상일 때만 출력을 내보냄.
(( 입력1 X 가중치1 + 입력2 X 가중치2 ))
-> 여기서 가중치(연결강도, 중요도)는 원하는 출력을 내보내기 위해 특정 입력값은 크게, 나머지는 작게 만드는 인공신경망의 핵심적인 부분.
-> 가중치를 알맞게 조정하는 것이 딥러닝의 학습 과정.
* * 단층 신경망 모델 예 * *
자전거여행을 갈지 말지를 결정하는 신경망 모델을 만들려고 한다.
-> 날씨, 함께갈 친구, 집에서의 거리를 입력으로 주면 이 입력들의 중요도(가중치)를 모두 고려하여 결정을 내리게 된다.
-> 입력이 같은 값을 가지고 있어도 중요도(가중치)에 따라 결정되는 출력 값은 달라진다.
(즉, 중요도가 높은 입력이 크게 증폭되어서 출력에 큰 영향을 미치게 된다.)
아래는 이 상황을 단층신경망으로 나타낸 것.
-> 입력층과 출력층만으로 구성된 신경망을 단층 신경망이라고 부른다.
-> 보통 입력은 x, 가중치 w, 출력 y 라고 표기한다.
-> 현재 네모가 쳐져 있는 부분의 이름은 ‘뉴런’ 이다. 입력층도 단순히 값을 받아들이는 뉴런이다.
-> 네모는 출력층의 뉴런인데, 이 출력층의 뉴런은 입력과 중요도를 모두 취합하여 판단하는 역할을 수행한다.
그러니까 위 그림에서는 x1*y1 + x2*y2 + x3*y3 이 값이 특정 값 이상이다 하면 여행간다 출력하고 아니면 안간다 출력한다.
신경망에서는 출력층 뉴런의 개수를 늘릴 수도 있다.
같은 입력이라도 여행의 종류에 따라서 가중치(중요도)가 달라진다.
-> w11과 w12는 같은 입력층에서 나오는 가중치이지만 값이 다름. Y2는 파란색 가중치들을 기준으로 계산하여 판단함.
---- 단층신경망 모델 ----
(( 5x3 화소를 가진 숫자 이미지를 이용해 0~9 까지 숫자를 분류하는 신경망 모델이다. ))
첫번째 칸부터 입력값이 아래와 같은 순서로 1, 0 으로 입력된다고 할 때
0부터 9까지 표현하기 위해 만든 것이라 할 때 출력층은 y0, y1, … y9 까지 있을 것이다.
(위에 자전거 여행 간다/ 안간다니까 이진분류이고 이 경우 출력이 0~9까지 나오므로 십진분류.)
현재 입력값과 가중치의 곱의 총합을 계산하였을 때 출력층에서 y9만 1으로 나오고 나머지는 모두 0으로 나왔으니 숫자는 9 라고 판단.
-> 잘 만든 신경망 모델이구나.
취합 및 판단을 정리하면,
-> 취합 : 입력을 받고, 간단한 산술연산을 통해 입력을 모은다. (가중치가 적용된 각 입력의 합 계산함.)
-> 판단 : 이 모은 입력이 일정수준(임게값)을 넘어서면 출력 (1)을 생성한다.
-> 이 출력은 다른 뉴런이 또 받을 수 있다.
즉 모든 뉴런은 입력 가중합을 구하는 부분과 출력을 내보내기 위한 판단 함수(f)로 구성된다. (입력층 뉴런 빼고)
입력가중합을 구하는 부분과 판단함수를 분리해서 아래 그림처럼 표현하기도 한다.
-> 또, 이와 같이 신경망을 통해 왼쪽(입력)에서 오른쪽(출력)으로 신호가 전달되는 과정을 ‘순전파’라고도 한다.
---- 뉴런 동작의 예 ----
마트에서 500원짜리 사과 2개와 300원짜리 오렌지 하나를 구입하려고 1000원을 들고갔다. 살 수 있나?
이 상황을 신경망 모델로 표현하면, 물건의 개수를 입력 값, 가격을 가중치 값으로 설정하면 된다.
2 * 500 + 1 * 300 을 입력 가중합 이라고 한다.
-> 이 입력가중합을 판단함수에 넣어서 1000보다 큰지 작은지를 판단해주면 된다.
-> 신경망에서는 보통 판단함수를 활성화함수라고 한다.
이 경우 활성화함수는 계단함수가 된다.
하지만 이 함수는 기준이 0으로 물건을 살지 말지 판단하는 활성화 함수이고, 우리가 필요한 판단함수는 1000원을 기준으로 판단해주는 활성화함수이기 때문에 기준값을 다음과 같이 바꿔준다.
하지만 이 함수는 기준이 0으로 물건을 살지 말지 판단하는 활성화 함수이고, 우리가 필요한 판단함수는 1000원을 기준으로 판단해주는 활성화함수이기 때문에 기준값을 다음과 같이 바꿔준다.
-> 결국 오른쪽 함수 모양이 될 것이고, x축 값은 입력가중합이고 y는 출력 값이 된다.
출력값을 그런데 이진 분류이기 때문에 0,1로 만들고 싶다.
-> 그래서 입력가중합에서 (-1000)을 더해주는데, 이 값을 바이어스 라고 한다.
(( 2 * 500 + 1 * 300 - 1000 )) 은 (( 2 * 500 + 1 * 300 1 * (- 1000) ))과 같으므로 바이어스를 입력단에 넣어서 표현하기도 한다.
입력이 1인 형태의 특수한 가중치라고 생각하면 된다.
'DATA MINING' 카테고리의 다른 글
딥러닝(신경망) #4 (0) | 2024.06.18 |
---|---|
딥러닝(신경망) #2 - 머신러닝과 딥러닝 (0) | 2024.06.18 |
딥러닝(신경망) #1 (1) | 2024.06.18 |
파이썬의 기본 리스트 vs numpy 라이브러리의 배열 (0) | 2024.03.28 |