AI데이터엔지니어 부트캠프 <핀테커스> 11주차 - (1) 딥러닝 기초 - Perceptron

Lidit·2023년 11월 6일

딥러닝과 머신러닝

일반적으로, ML(Machine Learning)의 한 종류로, 인공 신경망의 발전된 모델로 볼 수 있다.

딥러닝의 구성요소

Perceptron

기초 형태의 인공 신경망

  • 각각의 input을 입력층이라 하며, 위 그림의 y를 출력층이라 한다.
  • input에 각각 weight(가중치)를 곱하고, bias(편향)를 더하는 연산을 하는 함수
  • 계산한 값이 threshold(임계치)를 넘어가면 1, 그렇지 않으면 0을 출력하는 activation function(활성화 함수)을 가짐

모델의 성능을 높여줄 수 있는 weight와 bias를 찾는것이 딥러닝의 목표라 할 수 있다.

단층 퍼셉트론(Single-Layer Perceptron, SLP) 을 이용한 간단한 논리게이트 구현

단층 퍼셉트론(Single-Layer Perceptron, SLP)으론 XOR 논리연산이 불가능

위 그림에서 볼 수 있다시피, Single-Layer Perceptron으로는 XOR gate의 구현이 불가능하다.
어떻게 해결 했을까?

다층 퍼셉트론(Multi-Layer Perceptron, MLP)

  • Perceptron 관점에서, layer를 더 쌓아 이 문제를 해결 할 수 있다.

    • SLP는 입력층과 출력층만 존재
    • MLP에서는 중간에 layer를 추가한다. 중간에 추가된 층을 hidden layer(은닉층) 라 한다.
  • 은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN)이라 한다.

파이썬으로 표현하기

AND gate

def AND(x1, x2):
    if x2 > -x1 + 1.5:
        return 1
    else:
        return 0

OR gate

def OR(x1, x2):
    if x2 >= -x1 + 0.5:
        return 1
    else:
        return 0

NAND gate

def NAND(x1, x2):
    if x2 <= -x1 + 1.2:
        return 1
    else:
        return 0

half adder

def half_adder(x1, x2):
    s = XOR(x1, x2)
    c = AND(x1, x2)
    return s, c

full adder

def full_adder(x1, x2, ci):
    p = XOR(x1, x2)
    q = AND(p, ci)
    r = AND(x1, x2)
    s = XOR(p, ci)
    cout = OR(q, r)

    return s, cout

4bit full adder

def adder_4bit(a, b):
    s0, c1 = half_adder(a[-1], b[-1])
    s1, c2 = full_adder(a[2], b[2], c1)
    s2, c3 = full_adder(a[1], b[1], c2)
    s3, c4 = full_adder(a[0], b[0], c3)

    return str(c4) + str(s3) + str(s2) + str(s1) + str(s0)

0개의 댓글