반응형

퍼셉트론(Perceptron)

  • 퍼셉트론은 초기 형태의 인공 신경망으로, 다수 입력으로부터 하나의 결과를 내보내는 알고리즘
  • 뉴런을 흉내내어 만든 구조

→ 이런 수식을 보여주는데 , 여기서 i가 한개밖에 없으면 결국 선형회귀랑 똑같음 !!

  • 인공신경망은 퍼셉트론을 여러층 쌓고 이렇게 만듬
  • 결국 선형회귀랑 로지스틱회귀를 여러개 겹쳐서 사용하면 인공신경망에 쓰는 딥러닝이 되는 구조
그래서 선형회귀랑 로지스틱 회귀를 잘 이해하고 넘어가야 함
거의 선형회귀랑 로지스틱회귀가 딥러닝의 밑거름

 

XOR 문제

→ AND 나 OR 같은 경우 선을 하나만 그으면 분류가 가능함 (선형회귀, 로지스틱 회귀)

→ XOR 는 선 하나만 가지고 분류가 불가능함

 

왜 인공지능에 딥러닝이 나왔는가 ?? (XOR 문제)

  • 하나의 퍼셉트론은 선형으로만 분리할 수 있어, XOR은 풀 수 없음
  • 퍼셉트론을 여러 층으로 쌓으면 곡선으로도 분리할 수 있음,, 그래서 딥러닝이 등장함!
    다층 퍼셉트론 (MultiLayer Perceptron, MLP) - 딥러닝의 제일 시초
  • 다층 퍼셉트론처럼 은닉층이 2개 이상인 경우, 심층 신경망 (Deep Neural Network, DNN)이라고 부름

 

XOR 문제 실습 1

  • 단순 로지스틱 회귀 → XOR 문제를 해결할 수 없음
import numpy as np
import tensorflow as tf

 

  • Input 정의
    • 00 → 0 , 01 → 1 , 10 → 1 , 11 → 0
input = np.array([[0,0], [0,1], [1,0], [1,1]]).astype(np.float)
output = np.array([[0], [1], [1], [0]]).astype(np.float)

 

  • tensorflow 를 활용해서 모델 생성
    • Input 데이터가 두개가 들어오면 거기에 대해서 Dense 라는 Layer를 추가
    • → 퍼셉트론이라고 생각하면 됨
    • → sigmoid 함수를 썼는데 1층만 있으면 결국 Logistic regression이랑 똑같음
model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=2, dtype='float32'), # Input 정의
    tf.keras.layers.Dense(1, activation='sigmoid') # 실질적인 층
])

model.summary() # param:3 -> W:2, b:1

→ parameter 수가 3개라고 나옴,, Input 에서 두개가 들어오기때문에 두개에 대한 각각의 W가 생성이 되고 W 두개에 b가 한개 !!

 

  • 로지스틱 회귀랑 선형회귀에서 계속 학습할 때 썼던 GD를 SGD이라고 생각하면 됨
    • SGD는 Gradient Descent 위에 momentum이라고 생각하면 됨
optimizer = tf.keras.optimizers.SGD(lr=0.01, decay=0, momentum=0.99, nesterov=True)
model.compile(optimizer=optimizer, loss='mse', metrics=['accuracy']) 

# 학습 fit() 함수 호출
model.fit(input, output, epochs=10)

→ 파라미터 3개에 대해서 10번 학습하는데 계속 정확도가 50밖에 안나옴

→ XOR 문제를 풀 수가 없어서 50밖에 안나옴

 

아무리 학습을 해도 50점밖에 안되는 구조가 있어서 그런 부분을 수학적으로 풀어주기 위해서 층을 더 쌓으면 풀 수 있다 !!
반응형

XOR 문제 실습 2

  • 다층 퍼셉트론 → XOR 문제 해결 가능
import numpy as np
import tensorflow as tf

input = np.array([[0,0], [0,1], [1, 0], [1,1]]).astype(np.float)
output = np.array([[1,0], [0, 1], [0, 1], [1, 0]]).astype(np.float)

 

  • 모델 생성
model = tf.keras.Sequential([
                             tf.keras.layers.Input(shape=2, dtype='float32'),
                             tf.keras.layers.Dense(4, activation='relu'),
                             tf.keras.layers.Dense(4, activation='relu'),
                             tf.keras.layers.Dense(2, activation='softmax')
                             ])
                             
model.summary()

 

  • binary_crossentropy
optimizer = tf.keras.optimizers.SGD(lr=0.01, decay=0, momentum=0.99, nesterov=True)
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'])

 

  • 학습
model.fit(input, output, epochs=30)

→ 30번쯤 돌리니 정확도가 1점이 나옴 !! 드디어 !!!

 

XOR-1 에서는 모델에서 층을 하나만 줬음
XOR-2 에서는 모델에서 층을 3개를 쓰고, loss function도 binary_crossentropy 으로 바꿔줌
→ cross entropy가 분류에서 많이 씀
→ 멀티 Layer로 모델을 바꿔주고 학습을 하니깐 성능이 좋아짐
→ 이런식의 문제를 풀기 위해서 처음에는 단층을 썼었는데 XOR 문제도 당장 못풀기때문에 그부분을 해결하기 위해 다층 퍼셉트론으로 바꾸면서 DNN이 등장함 !!

 

반응형
반응형

자연어란?

  • 자연어(Natural Language)는 사람과 사람이 일상 생활에서 서로 대화하는데 사용하는 언어를 뜻함

자연어 처리

  • 자연어의 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 일
  • 전처리를 위한 형태소 분석, 개체명 인식, 구문 분석부터 음성 인식, 내용 요약, 번역, 사용자의 감성 분석, 텍스트 분류 작업(스팸 메일 분류, 뉴스 기사 카테고리 분류), 질의 응답 시스템, 챗봇 등의 응용분야에 활용이 됨

 

전처리 이해

  • 토큰화

    • 주어진 데이터를 토큰(Token)이라 불리는 단위로 나누는 작업
    • 토큰이 되는 기준은 다를 수 있음(어절, 단어, 형태소, 음절, 자소 등)
  • 정제

    • 불필요한 데이터(Noise data)를 제거하는 작업
  • 정규화

    • 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어주는 작업
  • 문장 토큰화

    문장분리

  • 단어 토큰화

    구두점 분리, 단어 분리

    “Hello, World!” -> “Hello”, “,”, “World”, “!”

 

Task의 종류

  • Part-of-Speech 태깅
  • 형태소 분석(한글)
  • 개체명 인식
  • 구문 분석
  • 상호 참조
  • 감정 분석
  • 번역
  • 질의 응답
  • 기계 독해
  • 텍스트 생성
  • 텍스트 요약
  • 대화 시스템(챗봇)
  • 언어 모델

 

형태소 분석

  • 형태소
    • 의미가 있는 최소 단위
    • 문법적, 관계적은 뜻을 나타내는 단어 또는 단어의 부분
  • 단어를 구성하는 각 형태소를 분리하고 기본형 및 품사 정보를 추출

예시) 회사는 서울시 강남구에 위치하고 있습니다.

회사/NNP+는/JX 서울시/NNP 강남구/NNP+에/JKB 위치/NNG+하/XSV+고/EC 있/VX+습니다/EF+./SF

 

개체명 인식

  • 개체명
    • 사람이름, 회사이름, 지명, 영화제목, 날짜, 시간 등
  • 개체명 인식
    • 텍스트에서 개체명을 찾아서 태깅하는 것

예시) 회사는 서울시 강남구에 위치하고 있습니다. 회사<OG>, 서울시<LC>, 강남구<LC>

 

구문 분석

  • 문장을 이루고 있는 구성 성분으로 분해하고, 위계 관계를 분석하여 문장의 구조를 결정하는 것

 

기계 독해

  • 주어진 문서를 빠르게 이해하고 문서에 기반하여 질문에 대한 답을 찾아내는 기술

 

언어 모델(Language Model)

  • 언어라는 현상을 모델링하고자 단어 시퀀스(또는 문장)에 확률을 할당하는 모델
  • 언어모델이 주어지면, 확률분포를 가지고 단어의 시퀀스를 뽑을 수(sample) 있으며, 텍스트를 생성할 수 있다는 뜻으로 생성 모델이라고도 불림
  • 언어 모델을 만드는 방법은 통계를 활용하는 방법과, 인공 신경망을 이용한 방법이 있음
앞에 있는 입력을 가지고 뒤에 뭐가 나올지 예측하는 것
- BERT, GPT

언어모델의 예시

 

 

반응형

+ Recent posts