본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Perceptron; 퍼셉트론
입력에 가중치를 곱해 더한 값이 기준을 넘는지로 두 부류를 가르는, 학습 가능한 가장 단순한 인공 뉴런

퍼셉트론(Perceptron)은 1958년 무렵 미국 코넬 항공 연구소(Cornell Aeronautical Laboratory)의 심리학자 프랭크 로젠블랫(Frank Rosenblatt)이 제안한 학습하는 인공 신경망 모델이다.[1] 여러 입력 신호에 가중치를 곱해 더하고, 그 합이 임계값을 넘으면 1, 넘지 못하면 0(또는 -1)을 내보낸다. 틀린 예를 볼 때마다 가중치를 고치는 간단한 학습 규칙이 있다는 점이 그 이전의 매컬럭-피츠 뉴런과 다르다.

오늘날 기준으로 보면 퍼셉트론은 선형 이진 분류기 하나에 불과하다. 하지만 "데이터를 보고 스스로 가중치를 조정한다"는 발상은 인공 신경망과 딥 러닝의 출발점이 되었고, 1969년 그 한계가 수학적으로 지적되면서 신경망 연구가 한동안 침체되는 계기도 되었다. 여러 층으로 쌓은 다층 퍼셉트론(MLP)이라는 이름에 그 흔적이 남아 있다.

입력 벡터 𝐱=(x1,…,xn), 가중치 𝐰=(w1,…,wn), 편향(bias) b에 대해 퍼셉트론의 출력은 다음과 같다.

y^=f(𝐰⋅𝐱+b),f(z)={1z>00z≤0

여기서 f는 계단 함수(헤비사이드 함수)다. 편향은 "임계값의 부호를 바꾼 것"으로, 입력에 항상 1인 성분을 하나 더하고 그 가중치를 b로 두면 식을 𝐰⋅𝐱 하나로 쓸 수 있다.

기하학적 의미

편집 원본 편집

𝐰⋅𝐱+b=0은 입력 공간의 초평면(2차원이면 직선)이다. 퍼셉트론은 이 초평면의 한쪽을 1, 다른 쪽을 0으로 분류한다. 가중치 벡터는 초평면의 법선 방향, 편향은 원점에서의 거리를 정한다. 그래서 퍼셉트론 하나가 풀 수 있는 문제는 두 부류를 초평면 하나로 가를 수 있는 문제, 즉 선형 분리 가능한(linearly separable) 문제뿐이다.

논리 게이트 예

편집 원본 편집

입력이 0과 1뿐인 2입력 퍼셉트론으로 기본 논리 게이트를 만들 수 있다. 아래는 가능한 가중치의 한 예다.

게이트 w1 w2 b 결정 경계
AND 1 1 -1.5 x1+x2=1.5
OR 1 1 -0.5 x1+x2=0.5
NAND -1 -1 1.5 x1+x2=1.5 (부호 반대)
XOR 불가능 직선 하나로 (0,1),(1,0)과 (0,0),(1,1)을 가를 수 없음

NAND만으로 모든 논리 회로를 만들 수 있으므로 퍼셉트론을 여러 층 연결하면 XOR도 표현할 수 있다. 예를 들어 XOR = AND(OR, NAND)다. 문제는 표현이 아니라 학습이었다. 층이 여러 개일 때 은닉층 가중치를 어떻게 고칠지 퍼셉트론 학습 규칙은 답하지 못했다. 자세한 내용은 XOR 문제 문서 참고.

퍼셉트론 학습 알고리즘은 오분류가 일어날 때만 가중치를 고친다. 정답 y∈{0,1}, 예측 y^, 학습률 η에 대해

𝐰←𝐰+η(y−y^)𝐱,b←b+η(y−y^)

맞게 분류하면 y−y^=0이라 아무것도 바뀌지 않는다. 1을 0으로 틀리면 가중치에 입력을 더해 다음번에 내적이 커지게 하고, 0을 1로 틀리면 입력을 빼서 내적을 줄인다. 레이블을 {−1,+1}로 쓰면 "y(𝐰⋅𝐱)≤0이면 𝐰←𝐰+y𝐱"로 더 간단해진다.

import numpy as np

def train_perceptron(X, y, epochs=100, lr=1.0):
    """X: (샘플 수, 특징 수), y: 0 또는 1"""
    w = np.zeros(X.shape[1])
    b = 0.0
    for _ in range(epochs):
        errors = 0
        for xi, yi in zip(X, y):
            pred = 1 if xi @ w + b > 0 else 0
            if pred != yi:
                w += lr * (yi - pred) * xi
                b += lr * (yi - pred)
                errors += 1
        if errors == 0:      # 한 바퀴 동안 오분류가 없으면 수렴
            break
    return w, b

X = np.array([ [0, 0], [0, 1], [1, 0], [1, 1] ])
w, b = train_perceptron(X, np.array([0, 0, 0, 1]))   # AND: 수렴
w, b = train_perceptron(X, np.array([0, 1, 1, 0]))   # XOR: 끝내 수렴하지 않음

이 규칙은 경사 하강법으로도 해석할 수 있다. 오분류된 점에 대해서만 −y(𝐰⋅𝐱)를 손실로 두고(퍼셉트론 손실) 한 샘플씩 기울기를 따라 내려가면 같은 갱신식이 나온다. 다만 계단 함수는 미분할 수 없어서, 출력 오차를 은닉층으로 거꾸로 전달하는 역전파에는 그대로 쓸 수 없다.

학습 데이터가 선형 분리 가능하면 퍼셉트론 학습은 유한 번의 수정 후 반드시 모든 학습 예를 맞히는 가중치에 도달한다. 이를 퍼셉트론 수렴 정리라 하며, 1962년 노비코프(Albert Novikoff)의 증명이 대표적이다.[2] 모든 입력의 노름이 R 이하이고, 단위 벡터 𝐰*가 마진 γ로 데이터를 가른다면(yi(𝐰*⋅𝐱i)≥γ) 수정 횟수는

k≤(Rγ)2

를 넘지 않는다. 마진이 넓을수록 빨리 수렴한다는 뜻이며, 입력 차원과는 상관이 없다. 반대로 데이터가 선형 분리 불가능하면 가중치가 끝없이 진동하며 수렴하지 않는다. 또한 수렴한 초평면은 여러 해 중 하나일 뿐, 마진이 가장 넓은 해는 아니다. 마진을 최대로 하는 해를 찾는 방법이 서포트 벡터 머신이다.

1943년 매컬럭(Warren McCulloch)과 피츠(Walter Pitts)는 신경 세포를 입력의 합이 임계값을 넘으면 발화하는 논리 소자로 모형화했다.[3] 이 모델의 가중치와 임계값은 사람이 정해야 했다. 1949년 도널드 헵(Donald Hebb)은 함께 활성화되는 뉴런 사이의 연결이 강해진다는 학습 가설(헵 규칙)을 내놓았다. 로젠블랫의 퍼셉트론은 매컬럭-피츠 뉴런에 데이터로부터 가중치를 조정하는 규칙을 붙인 것이다.

로젠블랫과 Mark I 퍼셉트론

편집 원본 편집

로젠블랫은 1956년 코넬 대학교에서 심리학 박사 학위를 받고 버펄로의 코넬 항공 연구소에서 일했다. 1958년 7월 미국 해군 연구청(Office of Naval Research)이 퍼셉트론을 공개했는데, 이때는 IBM 704 컴퓨터에서 돌아가는 시뮬레이션이었다. 펀치 카드의 왼쪽과 오른쪽 중 어디에 표시가 있는지를 50번의 시행 뒤 구별하게 되었다고 한다.[4] 같은 해 《뉴욕 타임스》는 "새 해군 장치가 해 보면서 배운다(NEW NAVY DEVICE LEARNS BY DOING)"라는 제목으로 이를 보도했다.[4] 기자회견에서 나온 과장된 기대는 당시 인공지능 연구자들 사이에서 논란이 되었다.

로젠블랫은 프로그램이 아니라 기계를 만들고 싶어 했고, 이후 광전지 배열로 이미지를 받아 패턴을 분류하는 전용 하드웨어 Mark I 퍼셉트론이 만들어졌다. Mark I은 시각 패턴 분류기였고, 그 뒤로 음성 인식용 퍼셉트론 Tobermory도 만들어졌다. Mark I은 현재 미국 스미스소니언 협회가 소장하고 있다.[4] 오늘날 교재에서 "퍼셉트론"이라 부르는 것은 보통 학습 가능한 가중치를 가진 출력 뉴런 하나이지만, 로젠블랫의 원래 퍼셉트론은 감각(S) 단위, 연합(A) 단위, 반응(R) 단위로 이루어진 체계였고 학습은 주로 연합 단위에서 반응 단위로 가는 연결에서 일어났다.[1] 로젠블랫은 1962년 저서 《Principles of Neurodynamics》에서 여러 층과 되먹임 연결을 가진 변형들도 다루었다.

민스키·페퍼트의 비판과 침체

편집 원본 편집

1969년 마빈 민스키(Marvin Minsky)와 시모어 페퍼트(Seymour Papert)는 책 《Perceptrons》에서 단층 퍼셉트론이 표현할 수 있는 함수의 한계를 수학적으로 분석했다. XOR, 그리고 도형이 연결되어 있는지 판정하는 문제처럼 국소적인 특징의 선형 결합으로는 풀 수 없는 문제가 있음을 보인 것이다. 이 책은 신경망 연구에 대한 관심과 연구비가 줄어드는 흐름과 맞물렸고, 코넬 대학교도 이 시기 로젠블랫의 연구비가 줄었다고 전한다.[4] 흔히 "민스키와 페퍼트가 다층 퍼셉트론도 XOR를 풀 수 없다고 했다"고 알려져 있지만, 그들의 분석 대상은 단층 구조였고 여러 층이면 XOR를 표현할 수 있다는 것은 알려져 있었다. 당시 없던 것은 다층 구조를 학습시키는 방법이었다. 이 시기 상황은 AI 겨울 문서 참고.

로젠블랫은 1971년 43번째 생일에 체서피크만에서 요트를 타다 사고로 숨졌다.[4] IEEE는 2004년 신경망 분야 공로상인 프랭크 로젠블랫 상을 만들었다.[4]

다층 퍼셉트론으로

편집 원본 편집

1986년 럼멜하트(David Rumelhart), 힌튼(Geoffrey Hinton), 윌리엄스(Ronald Williams)가 역전파로 은닉층이 있는 신경망을 학습시킬 수 있음을 보이면서 신경망 연구가 다시 살아났다.[5] 핵심은 계단 함수 대신 시그모이드처럼 미분 가능한 활성화 함수를 써서 출력 오차의 기울기를 앞 층으로 전달한 것이다. 이렇게 만든 망을 지금도 다층 퍼셉트론이라 부르지만, 각 뉴런은 엄밀히 말하면 계단 함수를 쓰는 퍼셉트론이 아니다. 자세한 내용은 멀티 레이어 퍼셉트론 문서 참고.

연도 사건
1943 매컬럭-피츠 뉴런 모델[3]
1949 헵의 학습 규칙
1958 IBM 704 시뮬레이션 공개(7월), 《Psychological Review》 논문 발표[1][4]
1960 위드로와 호프의 ADALINE과 LMS 학습 규칙[6]
1962 노비코프의 수렴 정리 증명[2], 로젠블랫 《Principles of Neurodynamics》
1969 민스키·페퍼트 《Perceptrons》
1971 로젠블랫 사망
1986 역전파로 다층 신경망 학습[5]
1999 프로인드·샤피르의 투표 퍼셉트론[7]
2002 콜린스의 구조화 퍼셉트론, 자연어 처리 태깅에 적용[8]
  • ADALINE(Adaptive Linear Neuron): 계단 함수를 거치기 전의 선형 출력과 정답의 제곱 오차를 줄이도록 가중치를 고친다(위드로-호프 규칙, LMS). 오분류가 없어도 오차만큼 계속 고친다는 점이 퍼셉트론과 다르며, 경사 하강법으로 연속 손실을 최소화하는 방식의 원형이다.[6]
  • 포켓 알고리즘(pocket algorithm): 선형 분리 불가능한 데이터에서 퍼셉트론이 진동하는 문제를 피하려고, 학습 중 가장 성적이 좋았던 가중치를 "주머니"에 보관해 두었다가 돌려준다.
  • 투표·평균 퍼셉트론: 학습 중 거쳐 간 가중치 벡터들을 살아남은 횟수만큼 투표하거나 평균해 일반화 성능을 높인다. 프로인드와 샤피르는 이 방식이 서포트 벡터 머신과 비슷한 마진 기반 성능을 낸다고 보였다.[7]
  • 커널 퍼셉트론: 내적을 커널 함수로 바꿔 입력을 고차원 특징 공간으로 사상한 효과를 낸다. 원래 공간에서 선형 분리 불가능한 데이터도 다룰 수 있다.
  • 다중 클래스·구조화 퍼셉트론: 클래스마다 가중치 벡터를 두고 점수가 가장 높은 클래스를 고른다. 콜린스는 이를 품사 태깅 같은 시퀀스 예측에 확장했다.[8]

다른 선형 분류기와 비교

편집 원본 편집
모델 출력 손실·목표 선형 분리 불가능한 데이터 확률 출력
퍼셉트론 0/1(계단 함수) 오분류 시에만 수정(퍼셉트론 손실) 수렴하지 않음 없음
ADALINE 선형 출력으로 학습, 판정은 계단 함수 제곱 오차 최소 제곱 해로 수렴 없음
로지스틱 회귀 시그모이드 확률 교차 엔트로피(로그 손실) 손실 최소 해로 수렴 있음
서포트 벡터 머신 부호 힌지 손실 + 마진 최대화 소프트 마진으로 처리 없음(별도 보정 필요)
  • 학습하는 기계의 첫 구현 사례 가운데 하나로, 데이터에서 가중치를 조정한다는 신경망 학습의 기본 틀을 세웠다.
  • 단층 구조의 한계를 둘러싼 논쟁은 표현력과 학습 가능성을 구분해야 한다는 교훈을 남겼다. 다층 구조는 XOR를 표현할 수 있었지만 학습 방법이 나오기까지 17년이 걸렸다.
  • 오늘날 신경망의 기본 단위(가중합 + 비선형 활성화)는 퍼셉트론에서 계단 함수를 미분 가능한 함수로 바꾼 형태다. 그래서 교재에서는 인공 뉴런 일반을 퍼셉트론이라 부르기도 한다.
  1. ↑ 1.0 1.1 1.2 Frank Rosenblatt, 〈The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain〉, Psychological Review 65(6), 386~408쪽, 1958. doi:10.1037/h0042519
  2. ↑ 2.0 2.1 Albert B. J. Novikoff, 〈On Convergence Proofs on Perceptrons〉, Proceedings of the Symposium on the Mathematical Theory of Automata, Vol. 12, 615~622쪽, 1962.
  3. ↑ 3.0 3.1 Warren S. McCulloch, Walter Pitts, 〈A Logical Calculus of the Ideas Immanent in Nervous Activity〉, Bulletin of Mathematical Biophysics 5, 115~133쪽, 1943. doi:10.1007/BF02478259
  4. ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 Melanie Lefkowitz, 〈Professor's perceptron paved the way for AI - 60 years too soon〉, Cornell Chronicle, 2019년 9월 25일. news.cornell.edu
  5. ↑ 5.0 5.1 David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams, 〈Learning representations by back-propagating errors〉, Nature 323, 533~536쪽, 1986. doi:10.1038/323533a0
  6. ↑ 6.0 6.1 Bernard Widrow, Marcian E. Hoff, 〈Adaptive Switching Circuits〉, IRE WESCON Convention Record, Part 4, 96~104쪽, 1960.
  7. ↑ 7.0 7.1 Yoav Freund, Robert E. Schapire, 〈Large Margin Classification Using the Perceptron Algorithm〉, Machine Learning 37, 277~296쪽, 1999. doi:10.1023/A:1007662407062
  8. ↑ 8.0 8.1 Michael Collins, 〈Discriminative Training Methods for Hidden Markov Models: Theory and Experiments with Perceptron Algorithms〉, EMNLP 2002. ACL Anthology W02-1001