728x90

2023-11-06 43rd Class

Deep Learning Intro

#️⃣ 딥러닝 적용 예시

  • 신한은행 AI모델
  • 윌라 AI 1.5 배속
  • 태양광사업의 구름과, 그림자 object detection
  • 기상관측 구름 object detection

딥러닝은 목표에 따라 사용 기술이 다름

#️⃣ To-Do List

최신 뉴스 많이 찾아보기
모델을 배울 때마다 어떤 도메인으로 연결시킬 수 있을지
어떤 개발을 할 수 있을지 서징 많이하기
그리고 나의 개발자로서의 목표와 연결지어 스토리텔링 만들기


Perceptron

#️⃣ Perceptron Formula

기본 식

여러개의 뉴런

임계치(theta) threshold를 좌변으로 이동

theta를 bias로 대체한 최종 perceptron 계산 식

#️⃣ Logic Gates

기본 게이트

NOT GATE

INPUT OUTPUT
A NOT A
0 1
1 0

AND GATE

INPUT OUTPUT
A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1

OR GATE

INPUT OUTPUT
A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1

XOR GATE

INPUT OUTPUT
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

조합 게이트

NAND GATE
(AND + NOT)

A B P Y
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0

NOR GATE
(OR + NOT)

A B P Y
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0

XNOR GATE
(XOR + NOT)

A B P Y
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1

HALF ADDER

Inputs Outputs
A B Sum Carry
0 0 0 0
1 0 1 0
0 1 1 0
1 1 0 1
  • hafl adder는 이진수 더하는 원리랑 같음

FULL ADDER

Inputs Outputs
A B Ci Sum Co
0 0 0 0 0
0 1 0 1 0
1 0 0 1 0
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 1
  • Ci : Carry in value from 2^0, input이랑 같은 자리에 올라온 수
  • Sum : 2^1의 자리 값 더하기 A+B+CI
  • Co: Carry out, Sum에서 넘은 2^2 자리 수

CUSTOM ADDER

Pasted image 20231106112751.png|400

A B Cin P Q R S Cout
0 0 0 0 0 0 0 0
0 1 0 1 0 0 1 0
1 0 0 1 0 0 1 0
1 1 0 0 0 1 0 1
0 0 1 0 0 0 1 0
0 1 1 1 1 0 0 1
1 0 1 1 1 0 0 1
1 1 1 0 0 1 1 1

#️⃣ Logic Gates’s Decision Boundary

  • AND, Or, Not 등 기본 gate가 만드는 0, 1의 구역은 직선으로 나눌 수 있음
  • decision boundary = linear
  • 하지만 XOR가 만드는 0, 1의 구역은 직선으로 나눌 수 ‘없음’
  • decision boundary = non-linear
  • Linear logic gate를 조합하여 NON-LINEAR Logic Gate 구현이가능해지며 MLP 시작

#️⃣ Linear Logic Gate의 조합으로 XOR GATE 구현

Inputs Outputs
A B P=NAND Q=OR R=AND XOR
0 0 1 0 0 0
0 1 1 1 1 1
1 0 1 1 1 1
1 1 0 1 0 0
  • XOR은 Multi Layer Perceptron의 기본적인 유형
  • 각각의 Gate는 Single Layer Perceptron
  • 딥러닝은 연속적으로 Gate 입출력을 거치면서 최종 output 값을 내는 것

Logic Gates and H/F Adders

code

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

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

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

def XOR(x1, x2):
    p = NAND(x1, x2)
    q = OR(x1, x2)
    y = AND(p, q)
    return y

def half_adder(A, B):
    S = XOR(A, B)
    C = AND(A, B)
    return S, C

def full_adder(A, B, Cin):
    P = XOR(A, B)
    S = XOR(P, Cin)
    Q = AND(P, Cin)
    R = AND(A, B)
    Cout = OR(Q, R)
    return S, Cout

def adder4(A, B):
    S0, C0 = half_adder(A[-1], B[-1])
    S1, C1 = full_adder(A[-2], B[-2], C0)
    S2, C2 = full_adder(A[-3], B[-3], C1)
    S3, Cout = full_adder(A[-4], B[-4], C2)
    S = [S3, S2, S1, S0]
    return Cout, S


## test code
print(adder4(A=[1, 0, 0, 1], B=[1, 1, 1, 0]))

result

(1, [0, 1, 1, 1])
반응형