'딥 러닝(Deep Learning)'은 머신 러닝(Machine Learning)의 특정한 한 분야로서 인공 신경망(Artificial Neural Network)의 층을 연속적으로 깊게 쌓아올려 데이터를 학습하는 방식을 말한다. 본격적으로 인공신경망 기술과 딥러닝을 다루기 전에 '퍼셉트론'이라는 인공신경망 알고리즘의 형태를 먼저 알아보자.
퍼셉트론??
퍼셉트론(Perceptron)은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 제안한 초기 형태의 인공 신경망으로 '다수의 입력으로부터 하나의 결과를 내보내는 알고리즘'이다. 퍼셉트론은 실제 뇌를 구성하는 뉴런의 동작과도 유사하다. 뉴런은 가지돌기에서 신호를 받아들이고, 이 신호가 일정치 이상의 크기를 가지면 축삭돌기를 통해서 신호를 전달하는데, 뉴런의 입력과 출력 신호는 퍼셉트론의 입력값과 출력값에 해당한다.
위 그림처럼 퍼셉트론은 다수의 신호(Input)을 입력받아서 하나의 신호(Output)을 출력하는데, 신호를 전달하는 역할과 함께 각 입력값들마다 곱해지 값을 weight('가중치')라고 한다. 가중치라고 부르는 이 weight는 각각의 입력신호에 부여되어 입력신호와의 계산을 하고 신호의 총합이 정해진 임계값(θ)을 넘었을 때 1을 출력한다. 임계값을 넘지 못하면 0 또는 -1을 출력한다.
각 입력신호의 weight는 중요도에 따라 다르게 부여되는데, 높을수록 중요하다는 것을 의미한다. 그리고 입력값(x) 외에도 딥러닝 모델의 최적화를 위해 b(bias. 편향)를 변수로 사용한다.
퍼셉트론에서도 가중합의 크기를 임계값과 비교하는 '활성화함수'를 거쳐 최종 출력값을 결정한다. 활성화 함수의 경우 앞서 머신러닝 파트에서도 다룬 적이 있다. 바로 시그모이도와 소프트맥스와 같은 함수인데, 퍼셉트론에서는 '계단 함수(step function)'를 사용한다.
여기서 편향이 딥러닝 모델 최적화의 중요 변수 중 하나인 이유를 알 수 있다. 가중합의 크기는 편향의 크기로 조절할 수 있기 때문인데, 편향은 퍼셉트론의 출력값 y를 결정짓는 중요 변수로 작용한다.
단층 퍼셉트론 (Single - Layer Perceptron)
앞서 다룬 퍼셉트론을 단층 퍼셉트론이라고 한다. 퍼셉트론은 단층 퍼셉트론과 다층 퍼셉트론으로 나뉘는데, 단층 퍼셉트론은 '값을 보내는 단계와 값을 받아서 출력하는 두 단계'로만 이루어진다. 이때 이 각 단계를 보통 층(layer)라고 부르며, 두 개의 층을 입력층(input layer)과 출력층(output layer)라고 한다.
단층 퍼셉트론은 어떤 일을 할 수 있을까?? 컴퓨터는 0, 1을 입력해 하나의 값을 출력하는 회로가 모여 만들어지는데, 이 회로를 게이트(gate)라고 부른다. 단층 퍼셉트론을 이용하면 AND. NAND, OR 게이트는 구현이 가능하며, 이 게이트 연산에 쓰이는 것은 '두 개의 입력값'과 '하나의 출력값'이다.
Ex)
AND 게이트 : 두 개의 입력값 x1, x2가 각각 0 또는 1의 값을 가질 수 있으면서 모두 1인 경우에만 출력값 y가 1이 나오는 구조.
NAND 게이트 : 두 개의 입력값이 1인 경우에만 출력값이 0, 나머지 입력값의 쌍(pair)에 대해서는 모두 출력값이 1이 나오는 구조.
OR 게이트 : 두 개의 입력이 모두 0인 경우에 출력값이 0이고, 나머지 경우에는 모두 출력값이 1인 게이트.
위 게이트는 모두 파이썬 코드로 간단하게 구현이 가능하다. But, 단층 퍼셉트론은 XOR 게이트의 구현이 불가능하다. XOR 게이트는 입력값 두 개가 서로 다른 값을 갖고 있을 때에만 출력값이 1이 되고, 입력값 두 개가 서로 같은 값을 가지면 출력값이 0이 되는 게이트이다. 단층 퍼셉트론은 직선 하나로 두 영역을 나눌 수 있는 문제에 대해서만 구현이 가능하다. 하지만 XOR 게이트는 직선 하나로 두 영역을 나눌 수 없다.
이러한 문제는 그럼 어떻게 해결할까?? 방법은 바로 다층 퍼셉트론!!
다층 퍼셉트론 (Multi - Layer Perceptron. MLP)
XOR 게이트는 기존의 AND, NAND, OR 게이트를 조합하여 만들 수 있다. 퍼셉트론의 관점에서 보면, 층을 더 쌓는다고 이해하면 된다. 그렇다면 단층 퍼셉트론과 다층 퍼셉트론의 차이는 무엇일까?
- 단층 퍼셉트론 : 입력층 / 출력층
- 다층 퍼셉트론 : 입력층 / 은닉층(hidden layer) / 출력층
cf) 다층 퍼셉트론은 입력층과 출력층 사이에 하나의 층이 더 존재하는데, 이를 '은닉층'이라고 한다. 다층 퍼셉트론은 줄여서 MLP라고도 부른다.
XOR 게이트의 경우는 은닉층을 1개만 사용하여 해결이 가능하지만, 다층 퍼셉트론의 경우 본래 은닉층이 1개 이상인 퍼셉트론을 말한다. (경우에 따라서 수십 개도 사용한다!!)
이처럼 입력층과 출력층 사이의 은닉층이 2개 이상인 신경망을 '심층 신경망(Deep Neural Network. DNN)'이라고 한다. 머신러닝에서 다루었던 모델의 훈련(training)과 학습(learning)을 이 심층 신경망에 적용하여 학습시킨다면, 이를 가리켜 우리가 흔히 아는 '딥러닝(Deep Learning)'이라고 한다.
다음에 계속..!!
이미지 출처) "https://www.flaticon.com/free-icons/neural-network" Neural network icons created by fajarestuu
'머신러닝(ML), 딥러닝(DL)' 카테고리의 다른 글
자연어 처리 토큰화(Tokenize) [머신러닝/딥러닝] (0) | 2024.03.23 |
---|---|
인공신경망(ANN)과 활성화 함수 [딥러닝] (0) | 2024.03.13 |
비지도 학습 [머신러닝] (1) | 2024.01.13 |
트리 알고리즘 [머신러닝] (1) | 2023.12.26 |
회귀 알고리즘과 모델 규제 [머신러닝] (0) | 2023.12.21 |