Deep learning

abcd·2021년 9월 7일

AI

목록 보기
2/2
post-thumbnail

딥러닝 개론

딥러닝

  • 머신러닝의 여러 방법론 중 하나
  • 인공신경망에 기반하여 컴퓨터에게 사람의 사고방식을 가르치는 방법

인공신경망

  • 생물학의 신경망에서 영감을 얻은 학습 알고리즘
  • 사람의 신경 시스템을 모방하여 만들어짐

사람의 신경 시스템(Neuron System)

뉴런이라는 신경세포(중학교때였나....) 여러가지가 연결된 신경시스템

딥러닝의 역사

이미지넷을 통한 첼린지를 통하여 AlexNet이 나오고 많은 발전이 이루어짐

현대의 딥러닝 기술 적용 사례

퍼셉트론(perceptron)

신경망 이전의 연구

사진의 이마와 턱을 기준으로 눈코입을 확인하고 숫자의 경우 예를들어 9를 확인할때는 네모안
의 오른쪽 | 짝대기를 확인후 위에 동그라미가 달려있는지 확인한다
패턴을 파악하고 예측을 하는 방식

초창기 신경망 퍼셉트론의 등장

딥러닝의 가장 기초적인 단위 -> 퍼셉트론

첫번째두번째

Inputs 과 outputs으로 사람의 신경세포와 비슷하게 만들어짐

bias = 입력된 값과 상관없이 입력되어지는 값

\displaystyle\sum_{}^{} -> 모두 더한다

활성화 함수

1보다 크면 무조건 1 0보다 작으면 무조건 0

퍼셉트론 동작 예시

ex. 1 , -2 -0.5 -> y = activation(-0.5+12+-2-1) = -0.5 -> 값은 = 0

w0 = 의지 w1 = 신작드라마 영향력 w2 = 여가시간에 따른 학습

시각화

점들은 각각의 데이터 대각선을 잘 구해야함 -> 그래야 구분을 잘할 수 있음

퍼셉트론은 선형 분류기로써 데이터 분류 가능함

선형 분류기란 선을 통해서 분류하게 됨

퍼셉트론의 단점

데이터가 하나의 선만으로 구분불가능할 경우 완벽한 분류를 못함

다층 퍼셉트론

비 선형적인 문제 해결

다층 퍼셉트론(murti Layer Perceptron)

히든층(Hidden Layer)


히든층이 많아진다면, 깊은 신경망이라는 의미의 Deep Learning이라는 단어 사용.

장점 : 분류할수 있는것이 많아져 성능이 상승
단점 : 가중치가 상당히 많아짐


텐서플로우

딥러닝 모델의 학습 방법

딥러닝 모델이란?

딥러닝 모델의 구성 요소

딥러닝 모델의 학습 방법

예측값과 실제값 간의 오차값을 최소화하기 위해 오차값을 최소화하는 모델의 인자를 찾는 알고리즘 적용

Loss function을 최소화하는 가중치를 찾기 위해 최적화 알고리즘을 적용

딥러닝 모델이 예측값 구하는 방식

ex.

bios = 0 이라는 가정

활성화 함수는 다양한 것이 존재 sigmoid , step , tangent , relv 등.(딥러닝 특징에 따라 달라짐)

최적화 방식

순전파를 사용하면 예측값과 실제값 간의 오차값을 구하여 Loss function을 구할 수 있지만
최적화를 하는 방식은? -> 경사 하강법(Gradient descent)을 사용

경사 하강법(Gradient descent)

  • 가중치를 Loss function값이 작아지게 업데이트 하는 방법

  • 가중치는 Gradient값을 사용하여 업데이트를 수행함

  • Gradient값은 각 가중치 마다 정해지며,역전파(Backpropogation)를 통하여 구할 수 있음.

역전파

output 에서부터 시작

가중치 업데이트 과정

딥러닝 모델의 학습 순서

  1. 학습용 feature데이터를 입력하여 예측값 구하기(순전파)
  2. 예측값과 실제값 사이의 오차 구하기(Loss 계산)
  3. Loss를 줄일 수 있는 가중치 없데이트 하기(역전파)
  4. 1~3번 반복으로 Loss를 최소로 하는 가중치 얻기

텐서플로우로 딥러닝 구현하기 - 데이터 전 처리

텐서플로우(TensorFlow)

유연하고,효율적이며,확장성 있는 딥러닝 프레임워크
대형 클러스터 컴퓨터부터 스마트폰까지 다양한 디바이스에서 동작 가능

딥러닝 모델 구현 순서

  1. 데이터 전 처리하기
  2. 딥러닝 모델 구축하기
  3. 모델 학습시키기
  4. 평가 및 예측하기

데이터 전 처리하기

Trnsorflow딥러닝 모델은 Tensor 형태의 데이터를 입력 받는다.
Tensor란 다차원 배열로서 tensorflow에서 사용하는 객체

1차원배열 vector 2차원배열 matrix 3차원배열이상 Tensor

tf.data.Dataset

# 데이터 불러오기
df = pd.read_csv('data.csv')
feature = df.drop(columns=['label'])
label = df['label']
# tensor 형태로 데이터 변환
dataset = tf.data.Dataset.from_tensor_slices((feature.values, lavel.values))

# .values = 배열로 작업

Epoch 와 Batch

batch -> 딥러닝이 학습하는 동안 가중치 업데이트 양이 많아짐 -> 전체의 데이터를 쪼개서 사용

Ex.

총 데이터가 1000개,Batch size = 100 일시

  • 1 iteration = 100개 데이터에 대해서 학습
  • 1 epoch = 1000/Batch size = 10 iteration
# tensor형태로 데이터 변환
dataset = tf.data.Dataset.from_tensor_slices((feature.values, lavel.values))
# dataset의 batch 사이즈를 32로 결정 ex. 320개 있을때 10개로 batch가 생김
dataset = dataset.batch(32)

텐서플로우로 딥러닝 구현하기 - 모델 구현

Keras

텐서플로우의 패키지로 제공되는 고수준 API
딥러닝 모델을 간단하고 빠르게 구현 가능

keras Method

모델 클래스 객체 생성

tf.keras.models.Sequential()

모델의 각 Layer 구성

tf.keras.layers.Dense(units, activation)
  • units : 레이어 안의 Node의 수
  • activation : 적용할 activation함수 설정

Input Layer의 입력 형태 지정하기

  • 첫 번째 즉,Input Layer는 입력 형태에 대한 정보를 필요로함
  • input_shape / input_dim인자 설정하기!

Model 구축하기 코드 예시!

model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10,input_dim=2,activation='sigmoid'), # 2개의 입력 변수,10개의 노드
tf.keras.layers.Dense(10,activation='sigmoid'),# 10개의 노드
tf.keras.layers.Dense(1,activation='sigmoid'),# 1개의 노드
])

입력이 2개고 출력이1개! 히든층은 2개!

Kerass Method.ver2

모델에 Layer 추가하기

[model].add(tf.keras.layers.Dense(units,activation))
  • units : 레이어 안의 Node의 수
  • activation : 적용할 activation함수 설정

Ex.

model = tf.kears.models.Sequential()

model.add(tf.keras.layers.Dense(10,input_dim=2,activation='sigmoid'))
model.add(tf.keras.layers.Dense(10,activation='sigmoid'))
model.add(tf.keras.layers.Dense(1,activation='sigmoid'))

딥러닝 모델 학습시키기 -> keras Method

dataset -> x,y에 넣어줘도 됨

ex.

model.compile(loss='mean_squared_error',optimizer='GSD')
# MSE를 loss로 설정,촤적화 방식은 SGD사용
model.fit(dataset,epochs=100)
# dataset에 저장된 데이터를 입력하고,epochs를 100으로 설정하고 학습

평가 및 예측하기 : keras Method

ex.

model.compile(loss='mean_squared_error',optimizer='GSD')
# MSE를 loss로 설정,촤적화 방식은 SGD사용
model.fit(dataset,epochs=100)
# dataset에 저장된 데이터를 입력하고,epochs를 100으로 설정하고 학습

---

model.evaluate(X.test,Y_test)
predicted_labels_test = model.predict(X_test)

신경망

이미지 처리를 위한 데이터 전 처리

이미지 처리 기술 예시

ex.

1번2번
첫번째두번째

1번과 같은 이미지가 있다고 할 때 어떤 동물인지 분류하고자 함.

2번사진의 이미지는 각 픽셀 값을 가진 숫자 배열로 인식!

이미지 전 처리하기

모두 같은 크기를 갖는 이미지로 통일하여 만듬

  1. 가로 세로 픽셀 사이즈를 표현하는 해상도 통일
  2. 색을 표현하는 방식 통일(RGB,HSV,Gray-scale,Binary등등)

    MNIST데이터 -> 사람의 손글씨를 이미지로 보여지는 데이터

이미지 처리를 위한 딥러닝 모델

기존 다층 퍼셉트론 이미지 처리 방식

극도로 많은 수의 파라미터가 필요 만약에 이미지에 변화가 있다면?

합성곱 신경망(Convolution Neural Network)

  • 작은 필터를 순환시키는 방식
  • 이미지의 패턴이 아닌 특징을 중점으로 인식

합성곱(CNN) 신경망의 구조

  • 입력 이미지의 특징을 추출,분류하는 과정으로 동작

  • 이미지에서 어떠한 특징이 있는 지를 구하는 과정
  • 필터가 이미지를 이동하며 새로운 이미지(feture Map)을 생성

필터를 통해서 전체적으로 비교하여 점수를 내고 점수에 대하여 피쳐맵을통해 보여짐

피쳐맵의 크기 변형 : Padding,Striding

필터를 원본사이즈와 같게 만드는 방법

Pooling Layer

  • 이미지의 왜곡의 영향(노이즈)를 축소하는 과정

Fully Connected Layer

  • 추출된 특징을 사용하여 이미지를 분류

CNN[] -> 키필터 [] 입필터[] 정리된것을 1차원배열로 [] 다들어감
각각의 정리된 것들에 위치하여 각자의 배열에 맞게 들어감

분류를 위한 Softmax활성화 함수

  • 마지막 계층에 Softmax 활성화 함수 사용

  • a+b+c+d+e+f = 1,a,b,c,d,e,f >=0

각각이 확률별로 나옴 ( ex. a,b,c,d,e,f중 확률값이 가장 높은것이 입력값의 결과물이됨)

합성곱 -> 특징 , 풀링 -> 사이즈,노이즈 , 활성함수 -> 분류

합성곱 신경망 기반 다양한 이미지 처리 기술

자연어 처리를 위한 데이터 전 처리

주변의 자연어 처리 예시

자연어 처리 과정

  1. 자연어 전 처리 (preprocessing)
  2. 단어 표현(Word Embedding)
  3. 모델 적용하기(Modeling)

자연어 전 처리 방법

  • 원 상태 그대로의 자연어는 전처리 과정이 필요함

Noise canseling(오류 교정)

  • 자연어 문장의 스펠링 체크 및 띄어쓰기 오류 교정

Tokenizing(토큰화)

  • 문장을 토큰(Token)으로 나눔, 토큰은 어절,단어 등으로 목적에 따라 다르게 정의

문장 자체를 수치변환하여 인식

StopWord removal(불용어 제거)

  • 불필요한 단어를 의미하는 불용어(StopWord) 제거

Bag of Words

  • 자연어 데이터에 속해있는 단어들의 가방

수치형으로 변화하기 위한 과정

토큰 시퀀스

  • Bag of words에서 단어에 해당되는 인덱스로 변환
  • 모든 문장의 길이를 맞추기 위해 기준보다 짧은 문장에는 패딩을 수행

자연어 처리를 위한 딥러닝 모델

워드 임베딩(Word Embedding)의 정의

  • 단순하게 Bag of Words의 인덱스로 정의된 토큰들에게 의미를 부여하는 방식

기존 다층 퍼셉트론 신경망의 자연어 분류 방식

자연어 문장을 기존 MLP모델에 적용시키기에는 한계가 있음 토근간의 순서와 관계를 적용할 수 있는 모델은? RNN(Recurrent Neural Network)모델

자연어 분류를 위한 순환 신경망(Recurrent Neural Network)

기존 퍼셉트론 계산과 비슷하게 X입력 데이터를 받아 Y를 출력

순환 신경망의 입출력 구조

  • 출력 값을 두 갈래로 나뉘어 신경망에게 기억하는 기능을 부여

ex .

인베이딩 백터값이 각각 들어감 예를들어 수업이 백터값이 다음으로 넘어가 수업이 , 이 가 들어가고 옆으로 쭉쭉 들어감

정리

전처리 -> 임베딩(특징) -> RNN(기억하게하는 딥러닝) -> 활성함수

순환 신경망 기반 다양한 자연어 처리 기술

0개의 댓글