happy cat image

everdevel

coding

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.
























everdevel이 만든 무료 클라우드 개발환경을 소개합니다.

방문해 주셔서 감사합니다.

가중치 (입력계층 은닉계층간 시그모이드 함수 계산)

앞에서 레이어와 노드에 대해서 알아봤습니다.

이제 가중치에 대해서 알아볼겁니다.

가장 첫시간에 이런 말을 했습니다.






“하지만 뉴런이 무조건 전기를 전송하는것은 아닙니다.
위에서 뇌는 속도는 느리지만 데이터를 병렬적으로 처리하며 그 처리 특성에는 불명확성이 있다고했습니다.
각 뉴런마다 전기가 어떠한 값에 도달해야만 전기를 전송하며, 이 값(가중치)은 각 뉴런마다 다릅니다.”






뉴런의 처리 특성에 불명확성이 있고 이 가중치는 학습에 있어 가장 중요합니다.

우리는 이 가중치를 각 노드에 임의로 적용합니다.

그러면 임의로 가중치를 적용해보겠습니다.

한개의 노드는 다음 계층의 모든 노드와 연결됩니다.

이미지로 표현하면 다음과 같습니다.

neuron

위 각 노드를 연결하는 화살표 하나 하나에 우리는 임의의 가중치를 적용합니다.

우선 설명을 위해 입력값과 노드 몇개만 가중치를 적용해보겠습니다.

neuron

위 이미지에서 입력계층의 노드들은 3,2,1이라는 입력값을 받습니다.

즉, 입력계층의 첫번째 노드로 전달 된 값은 3

입력계층의 두번째 노드로 전달 된 값은 2

입력계층의 세번째 노드로 전달 된 값은 1

그리고 이 노드들은 은닉계층의 각각의 노드들에게 신호(값)를 전달합니다.

그냥 전달하진 않고 가중치와 곱을 한 후 전달됩니다.

아래의 이미지는 위의 이미지와 같습니다.

neuron

위 이미지에서 은닉계층의 첫번째 빨간 노드를 봐주세요.

입력계층의 3개의 노드와 연결되어있습니다.

화살표를 보면 입력계층의 첫번째 노드와 은닉계층의 첫번째 노드 간에 가중치 0.4가 적용

입력계층의 두번째 노드와 은닉계층의 첫번째 노드 간에 가중치 0.3이 적용

입력계층의 세번째 노드와 은닉계층의 첫번째 노드 간에 가중치 0.7이 적용

됨 을 알 수 있습니다.

이런 경우 계산은 다음과 같이 진행합니다.

(입력계층의 첫번째 노드의 입력값) * (연결된 가중치) + (입력계층의 두번째 노드의 입력값) * (연결된 가중치) + (입력계층의 세번째 노드의 입력값) * (연결된 가중치)

아래의 이미지는 위의 이미지와 같습니다.

neuron

자 그럼 숫자를 대입해보면

(3 * 0.4) + (2 * 0.3) + (1 * 0.7) = 1.2 + 0.6 + 0.7

1.2 + 0.6 + 0.7 = 2.5

은닉계층의 첫번째 노드와 연결된 입력계층의 3개의 입력값과 각 가중치를 계산한 결과가 2.5가 나왔습니다.

하지만 여기에서 끝이아닙니다.

이 값을 시그모이드 함수로 계산해줍니다.

앞에서 우리는 시그모이드함수에 대해서 알아봤습니다.

참고로 저는 소수점 계산도 계산기를 사용합니다.;;;;

왜냐면 쩜을 틀릴때가 있거나 곱하기를 순간 혼동하여 잘못된 답을 낼때가 있어서입니다.

여러분들도 가능하면 계산기를 사용해주세요.

시그모이드 함수의 공식은 다음과 같습니다.

sigmoid function

시그모이드 함수의 공식에서 x의 값이 우리가 계산한 값인 2.5입니다.

e는 상수로 2.718281이죠.

그럼 푸는 방식은 다음과 같습니다.

neuron

e에 -2.5승 -x승이기 때문에 2.5앞에 -가 붙어 -2.5승입니다.

e는 상수로 2.718281이죠.

저는 아이폰 계산기가 불편해서 앱스토어에 있는 똑똑계산기 - 다용도 계산기(제조사 : Cleveni Inc.)를 사용합니다.

neuron

2.718281 ^ -2.5를 계산한 값이 0.082가 나왔습니다.

그럼 식은 1/1+0.082입니다.

1/1+0.082는 1.082이므로

1/1.082

neuron

1 나누기 1.082를 하면 답은 0.9242144177입니다. 너무 길이서 소수점 3자리까지 반올림 처리할게요.

그럼 0.924가 은닉계층의 첫번째 노드가 받는 입력값입니다.

이 값은 다음 레이어에게 입력값이 되고 가중치와 시그모이드함수 계산하여 다음 계층으로 전달됩니다.

그럼 가중치를 각 노드에 전달하여 출력값을 모두 내봅시다.

여기서 노가다를하고 다음 강좌에는 좀 더 쉽게 처리하는 방법을 알려드릴 예정이니

여기서 노가다를 한번 저랑 같이 해봅시다.

그럼 입력계층과 은닉계층간의 가중치를 제 맘대로 각 노드에 부여하겠습니다.

neuron

복잡해 보이니 은닉계층의 2번째 노드와 연결된 가중치만 보겠습니다.

neuron

입력계층 첫번째 노드의 가중치 0.6

입력계층 두번째 노드의 가중치 0.8

입력계층 세번째 노드의 가중치 0.9

그러면 위에서 했던것처럼 다시 계산을 해봅시다.

(입력계층의 첫번째 노드의 입력값) * (연결된 가중치) + (입력계층의 두번째 노드의 입력값) * (연결된 가중치) + (입력계층의 세번째 노드의 입력값) * (연결된 가중치)

(3 * 0.6) + (2 * 0.8) + (1 * 0.9) = 1.8 + 1.6 + 0.9

1.8 + 1.6 + 0.9 = 4.3

은닉계층의 두번째 노드와 연결된 입력계층의 3개의 입력값과 각 가중치를 계산한 결과가 4.3이 나왔습니다.

이 값은 이상태로 전달하지 못합니다.

시그모이드 함수로 계산을 진행하면 다음과 같습니다.

neuron

2.718281 ^ -4.3을 계산한 값이 0.014(소수 3자리까지 표시하고 반올림했어요.)가 나왔습니다.

neuron

그럼 식은 1/1+0.014입니다.

1/1+0.014는 1.014이므로

neuron

그럼 최종값은 0.986

은닉계층의 두번째 노드에 전달된 값은 0.986

그럼 이번엔 은닉계층 세번째 노드에 전달된 값을 구해봅시다.

neuron

또 위와 같은 방법으로 계산을 해봅시다.

(입력계층의 첫번째 노드의 입력값) * (연결된 가중치) + (입력계층의 두번째 노드의 입력값) * (연결된 가중치) + (입력계층의 세번째 노드의 입력값) * (연결된 가중치)

(3 * 0.1) + (2 * 0.4) + (1 * 0.6) = 0.3 + 0.8 + 0.6

0.3 + 0.8 + 0.6 = 1.7

은닉계층의 세번째 노드와 연결된 입력계층의 3개의 입력값과 각 가중치를 계산한 결과가 1.7이 나왔습니다.

이 값은 이상태로 전달하지 못합니다.

시그모이드 함수로 계산을 진행하면 다음과 같습니다.

neuron

2.718281 ^ -1.7을 계산한 값이 0.183(소수 3자리까지 표시하고 반올림했어요.)가 나왔습니다.

neuron

그럼 식은 1/1+0.183입니다.

1/1+0.014는 1.183이므로

neuron

그럼 최종값은 0.845

은닉계층의 세번째 노드에 전달된 값은 0.845

자 그럼 이번엔 은닉계층과 출력계층간에 임의의 가중치를 부여하고 출력계층이 어떤 값을 출력하는지 계산해 봅시다.

페이지가 너무 길어져서 다음 페이지에서 계속 진행하겠습니다.


봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

컨텐츠의 내용을 더 보려면 바로 아래에서 확인할 수 있습니다.


    
    

강좌로 돌아가기

댓글 0개

정렬기준