반응형

20211008

순환신경망

RNN

Recurrent neural network

보통의 신경망 알고리즘으로는 데이터의 맥락을 학습시킬 수 없습니다. 

그래서 이런 단점을 해결하고자 Recurrent neural network알고리즘이 개발되였다.

순환한다는 의미는 신경망의 뉴런에서 나온 정보가 다시 재사용되도록 순환되기 때문입니다 

 

어떤 시간 t의 뉴런에는 그 이전 시간 t-1 에 생성된 뉴런의 상태가 주입되어 새로운 상태가 만들어지고 , 그 데이터는 다시 이후 시간 (t+1) 에 입력되는 구조입니다. 

순환 신경망에서는 종종 이런 뉴런을 메모리 셀 memory cell 혹은 셀 cell이라고 부릅니다. 

 

셀에서 만들어지는 상태 데이터는 보통 은닉상태 hidden state라고 부릅니다.

 

기본적인 순환 신경망은 단기기억 short-term memory을 저장할 수 있다고 표현합니다. 

멀리 떨어진 데이터 간의 연관 정보는 파악하기 어렵습니다. 

 

220106

순환 신경망은 몇 단계 전으로 거슬러 올라가 데이터를 반영할 수 있는 신경망입니다. 

시계열 데이터 등의 맥락을 고려해 학습할 수 있으므로 음성 같은 파형 데이터 나 자연어 등의 학습에 이용합니다. 

순환 신경망은 합성곱 신경망과 달리 가중치에 대응하는 선형 원소가 두 종류(가중치 W와 변환 경로 H)존재합니다. 

중간 계층이 반환 경로 H를 통해 반복적으로 걸려 있는 것이 순환 신경망의 특징입니다. 

순환 신경망의 학습은 확률적 경사 항강법을 이용하며 실시간 순환 학습 Real-Time Recurrent Learning RTRL이나 시간 기반 오차역전파 BackPrppagation Through Time BPTT로 가중치를 업데이트합니다. 

시간 기반 오차역전파는 단계 수를 거슬러 올라가며 업데이트 할 수 있습니다. 

그러나 너무 먼 단계를 거슬러 올라가면 기울기 소실 문제가 발생해 학습이 어려워집니다. 

 

출처 :

텐서플로 첫걸음

처음 배우는 인공지능

 

반응형

'개념 정리' 카테고리의 다른 글

혼잡도_20211011  (0) 2021.10.20
LSTM_20211007  (0) 2021.10.20
Adam_20211005  (0) 2021.10.13
오버피팅_20211004  (0) 2021.10.13
드롭아웃_20211003  (0) 2021.10.13
반응형

CNN  DNN 코드

DNN앞에 CONVELUTION LAYER과 ㅡMAXIM

 

CNN(Convolutional NN) 구조

        Convolution filter pooling을 반복.

        이후 일반 DNN에 적용.

 

Convolution Filter

Convolution Filter - Stride :

필터 적용 시의 이동 칸 수.

보통은 1.

몇칸 이동한다는 것을 stride라고 한다.

 

 

Convolution Filter - Padding

필터 특성상 이미지가 작아지는 것을 방지하기 위해 원 이미지를 키우는 것.

 

 

 

Max Pooling

특징 추출과 분류

        convolution 필터와 pooling이 반복하여 feature 추출.

        이후 일반 DNN로 분류.

 

dnn에 여줄 때는 flattern 해준다.

기존 dnnconvolution 하고 max pooling 있는 것인 cnn이다.

 

vgg16구조

성능이 좋은 구조인지는 설명 못하지만 여러개 컴퓨터로 해서 한다.

우승 했던 모델을 가져와서 변형해서 한다.

 

함수가 성능을 잘 나와서 하지만 설명은 못한다.

 

# ADDED START

from tensorflow.keras.preprocessing.image import ImageDataGenerator

 

datagen = ImageDataGenerator(

    rotation_range=10# 0 ~ 180 회전하는 범위가 0 ~ 180 최대 180 까지 보낼  있다.

    width_shift_range=0.1좌우 

    height_shift_range=0.1위아래 

    fill_mode='nearest'이동 시키고 나면 없는 부분이 생겨서  가까운 값을 채워준다.

    horizontal_flip=True#좌우 반전

    vertical_flip=False  세로

)

# ADDED END

요즘에는 데이트를 실시간으로 만들어서 한다

model.fit_generator(datagen.flow(X_train, y_train, batch_size=128), epochs=5)

 

 

Conv2D ->가로 세로 있는것

cnn에서 conv2d -> Conv1D 1차원으로 바뀌였다.

cnn 사용가능하다.

옆으로 있는

 

분류(Classification)

 

 

google colab github 파일 가져오기

 

 

 

 

데이터 로딩하고 전처리 , 결측치(판다스) , outlier 데이터 이상하게 되여있는것  numpy에 담은 다음 입력 ,출력

학습을 돌리면

보통 오류가 나는 부분은 shape로 안했고 , string을 숫자로 못 바뛌거나 outlier는 학습이 안된것

 

 

 

rnn는 입력과 출력이 동일한다.

        상태를 가지고 있고, 다음 연산때 그 상태가 입력으로 사용된다.

출력된 값을 일력에 하나 저장하고 한다.

 

#Bidirectional

Bidirectional 양방향으로 하는 것 이다.

일반적인 것을 사용하는 것이 아니라 안에는 LSTM을 사용한다 .

 

 

LSTM(Long Short Term Memory)

        RNN의 단점을 보완한 모델

 

 

결과적으로 보면 입력과 출력이 있고

입력과 출력을 주면 크게 버서 나지않는다.

학습하는 시간이 거의 차이 나지 않다

rnn은 하나의 데이터가 있으면 하나의 워드이다.

sequencial과 같이 여준다.

cnn에 비해서 rnn는 최소 10배 이상 학습이 된다.

 

text는 만들 떄 embedding 이라는 방법을 하나 더 사용한다.

 

Word2Vec

 

 

이미지 분할

segmentation 픽셀 단위의 폐야 아니야 아니면 배경이야 이런것

segmentation 은 보통 여러개 한다. 색갈 별로 한다.

이미지 분할이란

본 글을 이해하기 위해서는 이미지 분할(image semantic segmentation) 개념을 우선 알아둘 필요가 있습니다. 이미지 분할은 이미지를 구성하는 개별 픽셀 분류를 목표로 합니다. 현재 보고 있는 픽셀에 해당하는 클래스(라벨) 값을 표기하는 방식으로 예측 결과물을 생성하죠. [그림 2]의 첫 번째 이미지의 풀(grass)과 소(cow)를 구분한다고 해봅시다. 소에 해당하는 픽셀 영역에는 ‘1’, 그 외 잔디 영역에는 ‘0’을 표기합니다. 그 후 기계는 1이 표시된 곳에 파란색 마스크(mask) 씌우고, 0이 표시된 곳에 초록색 마스크를 씌워 이미지에서 소와 잔디를 명확하게 구분합니다.

segmentation은 픽셀 다위의 분류 이다.

 

 

 

 

 

 

반응형

'Study > Deep learning' 카테고리의 다른 글

딥러닝-2  (0) 2020.11.26
딥러닝-1  (0) 2020.11.23

+ Recent posts