OneBook(Python & Deep Learning)
  • 한곳에서 끝내는 파이썬 & 머신러닝 & 딥러닝
  • 문서 작업을 시작하며
  • 1. 인공지능(Artificial Intelligence) 시대
    • 1.1. 인공지능이란 도대체 무엇인가?
    • 1.2. 4차 산업혁명
    • 1.3. 인공지능의 역사
    • 1.4. 인공지능 > 머신러닝 > 딥러닝
    • 1.5. 머신러닝
    • 1.6. 머신러닝 알고리즘
      • 1.6.1. 지도 학습 (Supervised Learning)
      • 1.6.2. 비지도 학습 (Unsupervised learning)
      • 1.6.3. 강화 학습(Reinforcement Learning)
    • 1.7. 인공신경망(ANN)
    • 1.8. 딥러닝
  • 2. 기본 상식
    • 2.1. 기본 용어의 이해
      • 2.1.1. CPU와 GPU의 차이
      • 2.1.2. 오픈소스(Open Source)
      • 2.1.3. 깃허브(GitHub)
      • 2.1.4. 위키 Wiki
      • 2.1.5. 아나콘다(Anaconda)
      • 2.1.6. 활성화 함수
      • 2.1.5. 딥러닝 프레임워크 소개
    • 2.2. 텐서플로(Tensorflow)
    • 2.3. 케라스(Keras)
    • 2.4. 파이토치(PyTorch)
    • 2.5. 학습에 필요한 중요한 도구와 라이브러리들
      • 2.5.1. 주피터 노트북(Jupyter Notebook)
      • 2.5.2. 파이참(PyCharm)
      • 2.5.3. 스파이더(Spyder)
      • 2.5.4. 넘파이(NumPy)
      • 2.5.5. 싸이파이(SciPy)
      • 2.5.6. Matplotlib
      • 2.5.7. 판다스(Pandas)
      • 2.5.8. 장고(Django)
      • 2.5.9. 파이큐티(pyQT)
      • 2.5.10. 싸이킷런(Scikit-learn)(Sklearn)
      • 2.5.11. CUDA & cuDNN
      • 2.5.12. 파이썬 표준 내장 라이브러리
    • 2.6. AI공부에 필요한 기본지식 3가지
      • 2.6.1. 수학
      • 2.6.2. 프로그래밍 기술
      • 2.6.3. AI의 적용 대상 산업에 대한 지식
  • 3. 개발 환경설정
    • 3.1. 윈도우 환경에서 설치하기
      • 3.1.1. 아나콘다 설치 (파이썬 설치)
        • 1) 아나콘다 패키지 업데이트
        • 2) conda에서 파이썬 가상 환경 (virtual environments) 생성하기
        • 3) NVIDIA GPU 환경 설정하기
      • 3.1.2. 텐서플로 설치
      • 3.1.3. 케라스 설치
      • 3.1.4. Jupyter Notebook 설치
      • 3.1.5. Visual Studio Code 설치
      • 3.1.6. 파이참 설치
        • 1) 파이참 가상환경 설정
        • 2) 파이참 환경 설정
        • 3) 설치된 라이브러리들의 버전 확인 하기
    • 3.2. 리눅스 환경에서 설치하기
      • 3.2.1. 아나콘다 설치(파이썬 설치)
      • 3.2.2. 텐서플로 설치
      • 3.2.3. 케라스 설치
      • 3.2.4. 장고 설치
      • 3.2.5. 파이참(PyCharm) 설치
        • 1) 파이참 가상환경 설정
  • 4. 파이썬 기초 학습
    • 4.1. 파이썬(Python)
    • 4.2. 파이썬의 특징
    • 4.3. 파이썬 기본 문법
      • 4.3.1. 대화형과 스크립트 모드 프로그래밍
      • 4.3.2. 모듈의 사용(import)
      • 4.3.3. 파이썬 식별자(Identifiers)
      • 4.3.4. 예약어(Reserved Words)
      • 4.3.5. 행(Lines)과 들여쓰기(Indentation)
      • 4.3.6. 문자열 표시
      • 4.3.7. 주석
      • 4.3.8. 파이썬 변수(Variables)
    • 4.4. 자료형과 연산자
      • 4.4.1. 자료형
      • 4.4.2. 파이썬 연산자
    • 4.5. 조건문과 반복문
      • 4.5.1. 조건문
      • 4.5.2. 반복문
    • 4.6. 함수
      • 4.6.1. 함수의 종류
    • 4.7. 모듈(Modules)
      • 4.7.1. 모듈의 참조 위치
      • 4.7.2. 네임스페이스(Namespace)와 범위(Scoping)
      • 4.7.3. dir( ) 함수
      • 4.7.4. 패키지(Packages)
      • 4.7.5. 기본 내장 모듈
    • 4.8. 숫자형 활용
      • 4.8.1. 실습: 계산기 만들기
    • 4.9. 문자열(Strings) 활용
      • 4.9.1. Unicode 한글의 사용
      • 4.9.2. 이스케이프 문자
      • 4.9.3. 문자열 연산자
      • 4.9.4. 문자열 포맷 연산자
      • 4.9.5. 내장 문자열 함수
    • 4.10. 시퀀스(Sequence) 자료형 활용
      • 4.10.1. 리스트(Lists)
      • 4.10.2. 튜플(Tuple)
      • 4.10.3. 딕셔너리(Dictionary)
    • 4.11 Class
    • 4.12. Date & Time
    • 4.13. 파이썬 에러처리
  • 5. 기초수학
  • 6. 머신러닝을 위한 파이썬
  • 7. 텐서플로 2.x
  • 8. 딥러닝을 이용한 자연어 처리 입문
  • 9. 파이토치로 시작하는 딥 러닝 입문
  • 9.6 6. Pytorch lightning
  • A1. 필수 학습 라이브러리들
    • 4.1 NumPy
      • 4.1.1. Basic Operations
      • 4.1.2. Indexing, Slicing 그리고 Iterating
      • 3.13.3. Shape Manipulation
    • 4.2 Matplotlib
    • 4.3 SciPy
      • 4.3.1. Interpolation
      • 4.3.2. Optimization
      • 4.3.3. Fast Fourier transforms: scipy.fftpack
    • 4.4 Pandas
      • 4.4.1 Pandas 자료구조
      • 4.4.2 Pandas 활용하기
  • A2. 머신러닝 & 딥러닝
    • 5.1. 머신러닝 개념 소개
      • 5.1.1. 경사하강법(Gradient Descent )
      • 5.1.2. 분류 (Classification)
      • 5.1.3. MNIST Dataset 소개
    • 5.2. 딥러닝 개념 소개
      • 5.2.1. 퍼셉트론
      • 5.2.2. 인공 신경망
      • 5.2.3. 대표적인 딥러닝 모델
    • 5.3. Tensorflow를 사용한 학습
      • 5.3.1. TensorFlow 기본 메커니즘
      • 5.3.2. Tensorflow Types
      • 5.3.3. 기본 동작 실습
      • 5.3.4. 선형 회귀
      • 5.3.5 로지스틱 회귀
    • 5.4. Keras를 사용한 학습
      • 5.4.1. Keras로 분석한 선형 회귀
      • 5.4.2. CNN(Convolutional Neural Network)
      • 5.4.3. Fashion MNIST with Keras
    • 5.5. 웹 크롤링
      • 5.5.1. requests와 BeautifulSoup으로 웹 크롤러 만들기
Powered by GitBook
On this page

Was this helpful?

  1. A2. 머신러닝 & 딥러닝
  2. 5.2. 딥러닝 개념 소개

5.2.1. 퍼셉트론

Previous5.2. 딥러닝 개념 소개Next5.2.2. 인공 신경망

Last updated 6 years ago

Was this helpful?

퍼셉트론은 인공신경망(Neural Network)과 딥러닝(Deep Learning)의 기초가 되는 이론입니다.

퍼셉트론의 동작은 노드(뇌로 따지면 뉴런)의 가중치와 입력치를 곱한 것을 모두 합한 값이 임계치보다 크면 활성화되고 1을 출력하며, 활성화되지 않으면 결과값으로 0을 출력하는 것입니다. 이를 그림으로 표현하면 아래와 같습니다. 즉 퍼셉트론은 2진(Binary, 0과1)값을 갖는 다중의 입력 x1, x2, x3…xn을 하나의 2진수 값으로 출력하는 모델입니다.

위 퍼셉트론의 개념도를 보면, x1에 w1부터 xn에 wn까지의 값이 있는데 w(Weight)는 가중치라고 보면 됩니다. 컴퓨터의 판단 없이 실제 있는그대로의 Data 가 X값이며, W값은 가중치 혹은 보정치가 되는 값이라고 보면 됩니다.

w값도 4개이고, x의 값도 네개이니, 위 개념도는 즉 x1w1, x2w2, x3w3, x4w4 값들이 다음 노드에 들어가는 구조입니다. 그리고 해당 값이 지정된 특정 값(기준이 되는 값)을 넘으면 1, 안 넘으면 0을 출력하는 것이 바로 퍼셉트론의 구조입니다.

즉 입력 벡터 x=(x1,x2,...,xd) 를 받아들인 뒤 각 성분에 가중치를 곱하고, 그 결과를 모두 합산한 후, 활성함수 σ(⋅)을 적용하는 것이라고 할 수 있습니다. 전체 과정을 수행하는 이 선형 모델을 하나의 함수 h(⋅)로 나타낼 수 있으며, 이를 퍼셉트론(perceptron)이라고 부릅니다.

이를 공식으로 다시 풀면 아주 간단하게 나오게 됩니다. 즉, 입력값x 와 가중치 w 에 b(bias)라고 불리우는 추가적인 보정치값을 합했을 때, 0보다 높으면 True라고 인지하여 값을 전달하고, 0이하일 경우, 버리기 위해서 False값을 전달합니다

그러나, 퍼셉트론 모델은 실제 상황에서 결정을 만드는 모델로 적용하기엔 적합하지 않습니다. 다음 그림 은 퍼셉트론의 집합으로 더 추상적인 결정을 내릴 수 있는 모델을 설계한 것입니다.

위 그림에서 왼쪽부터 1-layer,2-layer,3-layer라고 층으로 분류할 수 있습니다. 첫 번째 층에서의 입력들은 각각이 세 개의 결정을 출력합니다. 또 두 번째 층에서의 출력은 세 번째 층의 입력으로 사용되어 weighted sum을 구한 뒤 output을 출력합니다. 두 번째 층에서 나온 출력은 첫 번째 층의 출력보다 더 추상적이고 복잡한 단계입니다. 심지어 세 번째 층의 퍼셉트론은 더 추상적인 결정을 할 수 있습니다. 여기서 망의 층이 많아질수록 복잡한 결정을 만들 수 있단 걸 알 수 있습니다.

예를 들면, 치즈 페스티벌 외에 햄버거, 힙합, 체육 페스티벌들이 있을 때 그 페스티벌이 열리는 장소로 갈지 말지를 결정할 수 있습니다. 나는 치즈에 환장하지만 햄버거가 있는 곳은 가기도 싫다. 그러나 체육 페스티벌에 참여해야하고 힙합 페스티벌에는 여자 친구가 가기를 원합니다. 나의 결정은? 말로 설명하기 복잡한 이런 추상적인 결과를 퍼셉트론으로 이뤄진 여러 층의 모델로 상황별 입력을 통해 결정을 만들 수 있습니다.

위에서 퍼셉트론을 정의할 때 단일 출력을 가진다고 정의하였는데 위에 그림에선 하나의 퍼셉트론이 다중의 출력을 갖고 있습니다. 단지 출력이 여러 개의 퍼셉트론의 입력으로 사용되어짐을 그림으로 표현했을 뿐이지 여전히 하나의 퍼셉트론은 하나의 출력을 갖습니다.

퍼셉트론을 사용한 학습 방법은 처음에는 임의로 설정된 weight로 시작합니다. 학습 데이터를 퍼셉트론 모형에 입력하며 분류가 잘못됐을 때 weight를 개선해 나갑니다. weight를 개선해 나간다는 의미는 우리가 수학 문제를 잘못 풀었을 때 선생님이 다시 풀어오라고 하면 정답에 맞게 풀기 위해서 다시 풀고 다시 풀고 하다가 정답을 맞추는 것과 비슷합니다. 그래서 학습이라고 부릅니다. 하지만 퍼셉트론이 인공지능 분야에서 센세이션을 불러일으켰고 연구 과제도 이쪽으로 몰렸으나 이것이 가지는 한계점이 밝혀지면서 한동안 소외 받는 이론이 되었습니다. 퍼셉트론의 한계는 선형으로 분류를 할 수 있지만 XOR와 같이 선형 분류만 가능하며 비선형 분류는 불가능하다는 점입니다.

XOR 논리는 exclusive(배타적) 논리연산이다. 아래의 진리표를 보면, x1과 x2 중 어느 한쪽이 1일 때만 1을 출력한다.

x1

x2

y

0

0

0

1

0

1

0

1

1

1

1

0

아래의 그림을 보면 XOR에서는 선형으로(직선 하나로) 분류가 불가능함을 알 수 있습니다. 퍼셉트론의 한계를 간략히 말하면, 직선 하나로 나눈 영역만 표현할 수 있어 XOR과 같은 데이터 형태는 분류가 불가능하다는 한계가 있습니다.

출처: http://ecee.colorado.edu/~ecen4831/lectures/NNet3.html