Justweon
Justweon
Justweon
전체 방문자
오늘
어제
  • 분류 전체보기 (74)
    • 웹 개발 (2)
      • React (0)
      • Spring (0)
    • 모바일 앱 프로그래밍 (4)
    • 네트워크 프로그래밍 (17)
      • C (17)
    • DATA (42)
      • 데이터 사이언스 (6)
      • 머신 러닝 (31)
      • 데이터베이스 (2)
      • 기타 (3)
    • 토이 프로젝트 (0)
      • 닮은 배우 분류기 (0)
      • PDF 변환기 (GUI) (0)
    • 취미 (1)
      • Photoshop (1)
      • 먹부림 (0)
    • 이것저것 (2)
    • 보안 (1)
      • 드림핵 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 텐서보드
  • MLP
  • 알고리즘
  • 머신 러닝
  • SVM
  • 하이퍼파라미터
  • 코랩
  • 과소적합(underfitting)
  • 경사 하강법
  • pandas
  • 콜백
  • 과대적합(overfitting)
  • 그리드 서치
  • 데이터 전처리
  • 토이프로젝트
  • 취미
  • 심층 신경망
  • 시각화
  • 샐러드
  • 데이터 사이언스
  • keras
  • 정규화
  • 프로젝트
  • 맛집
  • 모델 평가
  • 하이퍼 파라미터
  • 파이썬
  • GUI
  • tensorflow
  • 포토샵

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Justweon

Justweon

DATA/머신 러닝

[머신 러닝] 퍼셉트론

2022. 1. 21. 13:59

퍼셉트론

퍼셉트론은 가장 간단한 인공 신경망 중 하나로 1957년에 프랑크 로젠블라트가 제안했습니다.

퍼셉트론은 TLU(threshold logic unit)또는 LTU(linear threshold unit)이라고 불리는 인공 뉴런을 기반으로 합니다.

 

아래 그림처럼 입력과 출력이 어떤 숫자이고 각 입력 연결은 가중치와 연관되어 있습니다.

TLU

TLU는 입력의 가중치 합을 계산(\( z = w_{1}x_{1} + w_{2}x_{2} + \dots + w_{n}x_{n} = x^{T}w \))한 뒤 계산된 합에 계단 함수를 적용하여 결과를 출력합니다. 즉, \(h_{w}(x) = step(z), z=x^{T}w\) 입니다.

 

퍼셉트론에서 가장 널리 사용되는 계단 함수는 헤비사이드 계단 함수(heaviside step function)와 부호 함수(sign function)입니다.

 

\[ \displaystyle heaviside(z) = \begin{cases} 0, z < 0 \\ 1, z \geq 0 \end{cases} \]

\[ \displaystyle sgn(z) = \begin{cases} -1, z < 0 \\ 0, z = 0 \\ 1, z > 0 \end{cases} \]

 

하나의 TLU는 간단한 선형 이진 분류 문제에 사용할 수 있습니다.

입력의 선형 조합을 계산해서 그 결과가 임곗값을 넘으면 양성 클래스를 출력하고, 그렇지 않으면 음성 클래스를 출력합니다. 이 때 TLU를 훈련한다는 것은 최적의 \( w_{0}, w_{1}, \dots, w_{n} \)을 찾는 것입니다.

 

퍼셉트론은 층이 하나뿐인 TLU로 구성됩니다.

각 TLU는 모든 입력에 연결돼 있습니다.

한 층에 있는 모든 뉴런이 이전 층의 모든 뉴런과 연결되어 있을 때 이를 완전 연결 층(connected layer) 또는 밀집 층(dense layer)라고 부릅니다.

 

퍼셉트론의 입력은 입력 뉴런이라 불리는 뉴런에 주입됩니다.

이 뉴런은 어떤 입력이 주입되든 그냥 출력으로 통과시킵니다.

입력층은 모두 입력 뉴런으로 구성됩니다.

보통 입력층에 편향 특성이 더해집니다.

전형적으로 이 편향 특성은 항상 1을 출력하는 특별한 종류의 뉴런인 편향 뉴런으로 표현됩니다.

 

아래 그림은 입력 두 개와 출력 세 개로 구성된 퍼셉트론입니다.

이 퍼셉트론은 샘플을 세 개의 다른 이진 클래스로 동시에 분류할 수 있으므로 다중 레이블 분류입니다.

퍼셉트론 예시

선형 대수학으로 한 번에 여러 샘플에 대해 인공 뉴런 층의 출력을 효율적으로 계산 가능합니다.

 

\[ h_{w, b}(X) = \phi(XW + b) \]

 

  • \(X\): 입력 특성의 행렬입니다. 행은 샘플, 열은 특성입니다.
  • \(W\): 가중치 행렬로 편향 뉴런을 제외한 모든 연결 가중치를 포함합니다. 이 행렬의 행은 입력 뉴런에 해당하고 열은 출력층에 있는 인공 뉴런에 해당합니다.
  • \(b\): 편향 뉴런과 인공 뉴런 사이의 모든 연결 가중치를 포함합니다. 인공 뉴런마다 하나의 편향값이 있습니다.
  • \(\phi\): 활성화 함수입니다. 인공 뉴런이 TLU일 경우 이 함수는 계단 함수입니다.

퍼셉트론의 훈련은 헤브의 규칙에서 영감을 받았습니다.

헤브의 규칙은 생물학적 뉴런이 다른 뉴런을 활성화시킬 때 이 두 뉴런의 연결이 강해진다는 규칙입니다.

 

퍼셉트론 학습 규칙은 오차가 감소되도록 연결을 강화시킵니다.

다시 말하면 퍼셉트론에 한 번에 한 개의 샘플이 주입되면 각 샘플에 대해 예측이 만들어집니다.

잘못된 예측을 하는 모든 출력 뉴런에 대해 올바른 예측을 만들 수 있도록 입력에 연결된 가중치를 강화시킵니다.

수식으로 나타내면 아래와 같습니다.

 

\[ \displaystyle w_{i, j}^{(next)} = w_{i, j} + \eta(y_{j} - \hat{y_{j}})x_{i} \]

 

  • \(w_{i, j}\): i번째 입력과 j번째 출력 사이를 연결하는 가중치입니다.
  • \(x_{i}\): 현재 훈련 샘플의 i번째 뉴런의 입력값입니다.
  • \(\hat{y_{j}}\): 현재 훈련 샘플의 j번째 출력 뉴런의 출력값입니다.
  • \(y_{j}\): 현재 훈련 샘플의 j번째 출력 뉴런의 타깃값입니다.
  • \(\eta\): 학습률입니다.

각 출력 뉴런의 결정 경계는 선형이라서 복잡한 패턴을 학습하지는 못하지만 훈련 샘플이 선형적으로 구분될 수 있다면 이 알고리즘은 정답에 수렴합니다. 사이킷런은 하나의 TLU 네트워크를 구현한 Perceptron 클래스를 제공합니다.

퍼셉트론은 일부 간단한 문제를 풀 수 없을 뿐만 아니라 고수준 문제 또한 해결할 수 없는 단점이 있습니다.

퍼셉트론을 여러 개 쌓아올리는 다층 퍼셉트론(MLP)를 이용하면 일부 제약을 줄일 수 있는데,

이와 관련해서는 다음 포스트에서 다뤄보겠습니다.

 

'DATA > 머신 러닝' 카테고리의 다른 글

[머신 러닝] 모델 저장과 복원  (0) 2022.01.22
[머신 러닝] 다층 퍼셉트론  (0) 2022.01.22
[머신 러닝] 비지도 학습  (0) 2022.01.19
[머신 러닝] 차원 축소  (0) 2022.01.18
[머신 러닝] 서포트 벡터 머신 (support vector machine)  (0) 2022.01.17
    'DATA/머신 러닝' 카테고리의 다른 글
    • [머신 러닝] 모델 저장과 복원
    • [머신 러닝] 다층 퍼셉트론
    • [머신 러닝] 비지도 학습
    • [머신 러닝] 차원 축소
    Justweon
    Justweon
    공부 목적을 위해 기록하는 블로그입니다 :)

    티스토리툴바