[sesac LLM] day38-240226 DL 딥러닝 첫수업, 퍼셉트론이란
기존 프로그래밍: 기존 프로그래밍은 사전에 정의된 규칙을 바탕으로 컴퓨터에게 명령을 내리는 방식이다. 예를 들어, 고양이를 인식하는 모델을 만들기 위해, 고양이의 특징(동그란 얼굴, 뾰족한 귀 등)을 사전에 정의하고, 이러한 특징에 기반해 고양이 이미지를 분류한다. 이 방식은 명확한 규칙을 설정할 수 있는 경우 유용하지만, 복잡한 문제에서는 규칙을 모두 정의하기 어렵다는 한계가 있다.
기계학습: 기계학습은 대량의 데이터를 활용해 컴퓨터가 스스로 패턴을 학습하는 방식이다. 지도학습, 비지도학습, 강화학습 등 다양한 유형이 있다. 지도학습은 레이블이 붙은 데이터를 사용해 학습하며, 비지도학습은 레이블 없이 데이터의 숨겨진 패턴을 발견하는 데 초점을 맞춘다. 강화학습은 특정 환경에서 보상을 최대화하는 방법을 학습한다. 기계학습 모델은 학습된 가중치와 특성을 분석하여 입력과 출력 간의 관계를 어느 정도 이해할 수 있다.
딥러닝: 딥러닝은 기계학습의 한 분야로, 복잡한 문제를 해결하기 위해 깊은 신경망을 사용한다. 딥러닝 모델은 여러 계층을 통해 데이터의 고차원적 특성을 추출하며, 이 과정에서 생성된 매개변수의 수가 매우 많기 때문에 내부 작동 방식을 직접적으로 이해하기 어렵다. 이로 인해 딥러닝은 종종 '블랙박스'로 묘사된다. 딥러닝은 특히 이미지 인식, 자연어 처리 등 복잡한 문제 해결에 강력한 성능을 보인다. 하지만, 충분한 데이터와 계산 리소스가 필요하며, 때로는 문제의 특성에 따라 전통적인 머신러닝 방법이 더 효과적일 수도 있다.
신경망 연산의 효율적인 처리를 위한 행렬 연산
딥러닝 신경망의 핵심 연산은 복잡한 곱셈과 덧셈의 조합으로 이루어져 있다. 이를 효율적으로 계산하기 위해 벡터와 행렬을 사용한다. 입력 는 벡터로, 가중치 는 또 다른 벡터로 표현된다. 두 벡터의 내적을 통해, 원래 여러 단계로 수행되는 연산을 단일 행렬 곱셈으로 단순화할 수 있습니다. 이 접근 방식은 신경망에서의 모든 연산을 행렬 연산으로 일반화하는 데 도움이 되고, 여러 번의 계산을 한 번의 연산으로 처리할 수 있어 계산 효율이 크게 개선된다.
딥러닝 역사
- 1943년: 워렌 맥컬록과 월터 피츠가 최초의 인공 뉴런 모델을 제안했다.
- 1956년: 퍼셉트론이 소개되며, 이는 초기 인공 신경망 연구의 기초가 되었다. (찾아보니까,,,1957년인듯?)
- 1969년: XOR 문제가 퍼셉트론의 한계를 드러냈으며, 이로 인해 신경망 연구가 한동안 침체기를 맞이했다.
- 1974년, 1986년: 역전파 알고리즘과 함께 신경망 연구가 다시 활성화되기 시작했다.
- 1982년: 순환 신경망(Recurrent Neural Network, RNN)이 제안되었다.
- 1998년: 컨볼루션 신경망(Convolutional Neural Network, CNN)이 제안되었으며, 이미지 인식 분야에서 큰 성공을 거뒀다.
- 2006년: 딥러닝이라는 용어가 제프리 힌튼에 의해 소개되었다.
- 2012년: AlexNet이 ILSVRC 대회에서 우승하며 딥러닝의 가능성을 입증했다.
- 2012년: 유튜브에서 1,000만 이상의 이미지를 이용한 논문이 발표되었다.
- 2014년: 생성적 적대 신경망(Generative Adversarial Network, GAN)이 제안되었다.
- 2016년: DeepMind의 AlphaGo가 이세돌 9단을 이기며 인공 지능의 새로운 시대를 알렸다.
퍼셉트론 역사
1957년, 퍼셉트론
퍼셉트론 (Perceptron)은 프랑크 로젠블라트가 1957년에 제안한 초기 형태의 인공 신경망이다. 퍼셉트론은 입력 신호에 대해 가중치를 부여하고 활성화 함수를 통해 출력을 계산하는 구조를 가졌다. 퍼셉트론은 다수의 입력과 하나의 출력을 가진다. 퍼셉트론은 가장 기초적인 형태의 인공신경망으로, 단층(single-layer) 퍼셉트론은 단순한 선형 분류 문제만을 해결할 수 있다.
가중치와 편향(bias)은 딥러닝에서 중요한 학습 가능한 매개변수들이다.
- 가중치(Weights): 입력과 출력 간의 관계를 나타내는 매개변수이다. 입력 신호에 대해 각각의 가중치가 곱해져서 출력을 계산하는 데 사용된다. 학습 과정에서 가중치는 오차를 최소화하기 위해 조정된다. 따라서 가중치는 모델이 데이터를 잘 표현하고 일반화할 수 있도록 도와준다.
- 편향(Bias): 편향은 각 뉴런이 얼마나 쉽게 활성화되는지를 조절하는 매개변수이다. 편향은 입력에 추가되어 실제 출력과의 차이를 줄이기 위해 조정된다. 편향은 모델이 데이터를 더 잘 맞추도록 하며, 특정 패턴이나 관계를 학습할 수 있도록 도와준다.
1969년, 퍼셉트론의 한계 : XOR문제 => 침체기
단순 퍼셉트론으로는 XOR 같은 비선형 문제를 해결할 수 없어 퍼셉트론의 한계를 드러냈으며, 이로 인해 신경망 연구가 한동안 침체기를 맞이했다. XOR 문제는 입력 공간에서 두 개의 클래스를 나누는데, 이를 선형 분리하는 것은 불가능하다. 예를 들어, 2차원 공간에서 (0, 0), (1, 1)은 한 클래스에 속하고 (0, 1), (1, 0)은 다른 클래스에 속하는데, 선형 분리하려면 하나의 직선으로 두 클래스를 완벽하게 나눌 수 있어야 한다. 하지만 XOR 문제에서는 두 클래스를 나누는 선형 결정 경계를 그릴 수 없다.
1986년, 다층 퍼셉트론으로 신경망 연구 활성화
1986년에는 다층 퍼셉트론과 역전파 알고리즘이 제대로 이해되기 시작했다. 신경망 연구가 다시 활성화되기 시작했다.
다층 퍼셉트론은 여러 개의 퍼셉트론을 층층이 쌓아 비선형 문제를 해결할 수 있는 구조를 만들었다. 각 층을 추가할 때마다 모델은 더 복잡한 함수를 학습할 수 있는 능력을 갖게 되며, 이를 통해 이전에는 해결할 수 없었던 문제들을 해결할 수 있게 되었다.
1990년까지의 빙하기가 온 이유
- 연산 복잡성: 층이 추가될수록 연산이 복잡해지는데, 이는 많은 매개변수(parameter)를 구하는 것을 어렵게 만들었다. 특히, MLP를 학습시킬 수학적인 모델이 부족했기 때문에 이 문제를 해결하는 것이 더욱 어려웠다. 또한, 당시의 컴퓨터 파워가 다층 구조의 복잡한 모델을 효율적으로 학습시키기에는 충분하지 않았다.
- 기울기 소실: 역전파(backpropagation) 알고리즘에서는 기울기를 사용하여 모델을 학습시키는데, MLP에서는 층이 깊어질수록 기울기가 사라지는 문제로, 학습이 잘 되지 않음.
- 오버피팅: 다층 퍼셉트론은 학습 데이터에 대해 과도하게 적합하면서(overfitting) 테스트 데이터에서는 성능이 나오지 않음. 모델이 학습 데이터에 너무 맞춰져서 새로운 데이터에 대한 일반화 능력이 떨어짐
- 계산 복잡성 증가: 다층 퍼셉트론이 구조화될수록 필요한 계산량이 기하급수적으로 증가해서 느려짐
퍼셉트론은 인공신경망의 기초를 이루며, 생물학적 뉴런의 기능을 단순화하여 모방한 모델이다. 신호를 전달하는 생물학적 뉴런의 축색돌기 기능을 선형 방정식으로 재현한다. 이 모델에서는 다수의 입력값에 각각의 가중치를 곱한 뒤, 이들의 합에 활성화 함수를 적용하여 최종 출력을 결정한다. 선형 퍼셉트론에서 활성화 함수로는 주로 단위 계단 함수가 사용되어, 설정된 임계값을 기준으로 출력값이 변경된다.
신경망에서의 입력과 그 입력의 가중치 곱은, 입력 신호의 중요도를 조정하는 역할을 한다. 이 과정을 통해 얻어진 가중합은 각 뉴런이 다음 레이어로 신호를 전달할지 여부를 결정하는 활성화 함수로 전달된다. 따라서, 입력값과 가중치의 곱은 신경망 내에서 신호의 흐름과 처리 과정에서 중추적인 역할을 수행한다.
뉴런과 인공뉴런모델(퍼셉트론)
뉴런은 축색돌기(axon), 수상돌기(dendrites), 그리고 세포체(cell body)로 구성된다. 수상돌기는 다른 뉴런으로부터 신호를 받고, 세포체는 이 신호들을 통합한다. 축색돌기는 통합된 신호를 다른 뉴런으로 전달한다.
- 수상돌기(Dendrites): 외부로부터의 신호(정보)를 받아들이는 부분. 다른 뉴런들로부터 오는 전기적 신호를 세포체로 전달한다.
- 세포체(Cell Body): 수상돌기로부터 받은 신호를 통합하는 부분. 이곳에서 신호들이 합산되어 축색돌기로 보내질지 말지를 결정한다.
- 축색돌기(Axon): 세포체에서 통합된 신호를 다른 뉴런이나 근육, 기관 등으로 전달하는 긴 섬유형 구조.
이러한 작동 원리를 모델링하여 만든 것이 인공 뉴런, 즉 퍼셉트론이다. 인공 뉴런 모델에서는 수상돌기가 입력을 받는 부분에 해당하며, 각 입력에는 가중치가 할당된다. 입력값은 가중치와 곱해지고, 이렇게 가중치가 적용된 모든 입력값들은 합산된다. 이 합산된 값이 활성화 함수를 거쳐 출력으로 변환된다.
- 입력(Inputs): 수상돌기에 해당하며, 여러 데이터 포인트(특성)을 받아들인다. 이들은 외부로부터의 신호에 해당한다.
- 가중치(Weights): 각 입력에 곱해지는 계수로, 신호의 강도나 중요도를 나타낸다. 생물학적 뉴런의 시냅스 강도와 유사하다.
- 합산(Summation): 세포체와 유사하게 모든 입력 신호에 가중치를 곱한 후 합산한다. 이 합산된 값이 활성화 함수로 전달된다.
- 활성화 함수(Activation Function): 축색돌기에 해당하는 부분으로, 합산된 신호가 일정 임계값 이상일 때 출력 신호를 전달한다. 이 함수를 통해 인공 뉴런이 활성화(출력을 내보내는) 여부가 결정된다.
- 출력(Output): 인공 뉴런의 최종 출력 값으로, 다음 층의 인공 뉴런으로 전달되거나 최종 예측 결과로 사용된다.

퍼셉트론은 단일 뉴런 모델로, 인공신경망의 가장 기본적인 형태이다. 여러 개의 입력값(x)을 받아 각각의 입력에 대해 설정된 가중치(w; weights)를 곱한 다음, 그 결과를 모두 합하여 총 입력값을 계산한다. 여기에 뉴런의 활성화 정도를 조정하는 매개변수인 바이어스(b; bias)가 더해진다. 이렇게 얻어진 총 입력값은 활성화 함수(f; activation function)를 통과하여 최종 출력값(y)이 결정된다.
이 모델에서 'weights'와 'bias'는 퍼셉트론의 학습 가능한 매개변수(parameters)이다. 학습 과정에서 이 매개변수들은 주어진 데이터에 대해 올바른 출력을 내기 위해 조정된다. 가중치는 각 입력값이 최종 결과에 미치는 중요도를 조절하고, 바이어스는 활성화 함수의 임계값을 조정하여 뉴런의 활성화 여부를 결정한다. 이러한 과정을 통해 퍼셉트론은 데이터를 분류하거나 예측하는 데 사용할 수 있다.