[Neural Networks] Inside the box

Bobae·2023년 9월 20일

Deep Learning

목록 보기
1/1

해당 내용은 Statquest 강의를 보고 작성된 내용입니다. 머신러닝 혹은 딥러닝의 입문자를 위해 쉽게 강의가 구성되어 있어, 참고하시면 아주 좋을 것 같습니다.


Neural Networks

Neural Networks(NN)는 머신러닝에서 인기있는 알고리즘 중 하나입니다. 하지만 사람들이 때때로 Neural Networks를 블랙박스라고 부르기도 하는데, Neural Networks를 이해하기 힘들기 때문입니다.

Neural Networks Example

NN을 이해하기 쉽게 예를 들어 봅시다. 우리는 질병을 치료하기 위해 디자인 된 신약을 개발했는데, 이 약의 복용량(dosage)을 테스트 한다고 가정합시다.
적절한 복용량을 찾기 위해서, 우리는 이 약을 3개의 다른 그룹에 각각 다르게 투약합니다. 예를 들면, Green Group에는 적은 양의 투약(Low dosage), Blue Group에는 중간 양의 투약(medium dosage), Red Group에는 많은 양의 투약(high dosage)을 실험합니다.

어찌해서 임상실험 후 약효를 기록했습니다. 그 결과, 작은양의 약 투약은 효과적이지 않았습니다. 그렇기 때문에 작은양의 약 투약의 약효를 0으로 평가합니다. 반면, 중간 양의 투약은 매우 효과적으로 밝혀졌습니다. 때문에, 1로 평가합니다. 그리고, 많은 양의 투약 역시 효과적이지 않았습니다. 그래서 0으로 평가합니다. 그 결과 우리는 이런 데이터를 가지게 되었습니다.
그래프의 가로축은 투약의 양, 세로축은 약의 효능을 나타냅니다. 가로축의 값은, 왼쪽에서 오른쪽으로 갈수록 low dosage -> high dosage 값을 나타냅니다.

우리는 이 데이터를 잘 설명하는 Fit하는 그래프를 만들고 싶습니다. 가장 쉬운 방법은 선형 라인으로 그리면 됩니다! 하지만 우리는 단순히 선형라인으로 그릴 수 없습니다. 왜냐면 다른 그룹의 데이터는 무시되기 때문입니다. 아래 예시에서 보듯, low dosage 데이터와 high dosage 데이터를 연결시 medium dosage 데이터는 설명할 수 없게 됩니다. 반대의 경우들도 마찬가지입니다.

가장 좋은 방법은 다음과 같은 커브모양의 그래프입니다. 이 커브모양의 그래프는 모든 데이터를 잘 설명할 수 있습니다. 이 때, NN은 이 구불구불한 선을 만들어낼 수 있습니다. 아무리 복잡한 구불구불한 선이더라도, NN을 사용하면 데이터에 Fit되는 선, 함수, 그래프를 만들 수 있습니다.

NN은 노드노드와 노드의 연결로 이루어져 있습니다. 아래 그림에서 보이는 숫자들은[34.4,2.14,1.30...][-34.4, 2.14, -1.30...] 이 NN이 데이터에 적합했을 때 추정된 매개변수(Weights, bias) 값을 나타냅니다.
보통, NN은 매개변수가 정해지지 않은 unknown 값으로 시작합니다. 이 Unknown 매개변수를 찾기 위해 우리는 backpropagation을 사용합니다.

아래 그림에서 DosageInput 데이터, EfficacyOutput 데이터를 나타냅니다. 중간에 두개의 커브라인을 가진 노드들은 꾸불꾸불한 선을 만드는 역할을 할 것입니다. NN에서는 이 꾸불꾸불한 선의 모양을 나타내는 함수를 선택할 수 있습니다. 이것을 activation function이라고 합니다. 예시에서 사용된 커브모양은 softplus 모양입니다. 그 이외에, ReLU, sigmoid 등 사용 가능합니다.

우리의 NN의 예시는 매우 간단하지만, 실제론 더 복잡하게 만들어낼 수 있습니다. Input을 여러개 넣거나, Output이 여러개 출력되거나, Input과 Output 사이에 다양한 layers와 각 레이어별 여러 노드들을 추가할 수 있습니다. 이 input, output 사이의 layers 들을 hidden layers라고 합니다.

NN을 설계할 때, 우리는 hidden layer의 수, 그리고 각 hidden layer별 몇개의 노드들을 사용할 것인지 선택해야 합니다. 우리의 예시는 1개의 Input, Output, 1개의 hidden layer와 2개의 노드로 구성되어 있습니다.

이제, 해당 숫자들이 어떻게 NN을 표현하고, 꾸불꾸불한 선을 만드는지 살펴봅시다. 우리는 두개의 커브라인 그래프를 합해서 최종 꾸불꾸불한 그래프를 만들 것입니다.

우선, low Dosage 값부터 시작합니다. 커브라인 그래프의 x값x=(Dosage34.4)+2.14x=(Dosage * -34.4) + 2.14으로 정의되있다고 가정합니다. 그리고 결과값은 f(x)=log(1+ex)f(x)=log(1+e^x)라고 가정합니다. dosage=0을 대입하게 되면 x=2.14x=2.14의 값을 얻을 수 있습니다. x가 2.14일때, f(x)=2.93f(x)=-2.93을 얻을 수 있습니다. 그리고 dosage를 1까지 늘려가며 식을 수행합니다. 다음 아래 왼쪽의 파란색과 같은 그래프를 그릴 수 있습니다.

dosage를 1까지 늘려가며 식을 수행했을 때, 우리는 파란색 커브모양의 그래프의 빨간색 박스모양만이 우리가 실제로 얻고자하는 구불구불한 모양의 그래프를 만드는데 영향을 끼치는 것을 알 수 있습니다.
그 다음, 이전 출력값에 1.3-1.3을 곱해줍니다. 곱해주면 왼쪽의 파란색과 같은 그래프로 변형된 것을 알 수 있습니다.

마찬가지로, 주황라인의 식처리도 동일하게 해줍니다. 그리고 마지막 연산처리 sum을 해주면 우리가 원하는 Green색의 구불구불한 그래프를 얻게 되었습니다.

NN을 사용하면 더 구불구불한 모양도 우리는 표현할 수 있습니다.


이렇게 간단하게 Neural Networks의 구조 및 기본 개념을 살펴보았습니다. 실제 Neural Networks 설계 시, 적절한 parameters를 찾는 것이 우리의 과제입니다. 이 parameters를 찾기 위해서 필요한 개념은 다음 강의에서 소개하겠습니다.

profile
현재 머신러닝, 딥러닝을 공부하고 있습니다.

0개의 댓글