일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 중학1-1
- 딥러닝
- 개발일기
- 자바 실습
- 자바스크립트심화
- SQL
- 순환신경망
- CSS
- 디버깅
- JDBC
- 데이터베이스
- 머신러닝
- rnn
- 파이썬
- 정보처리기사필기
- 오블완
- 정보처리기사실기
- 자바스크립트
- 중학수학
- c언어
- 데이터분석
- html/css
- 자바
- JSP
- 상속
- 컴퓨터구조
- 연습문제
- 혼공머신
- JSP/Servlet
- 컴퓨터비전
- Today
- Total
목록딥러닝 (72)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
드디어 자연어 처리 부분을 마치고 트랜스 포머에 대해서 공부해보려고 한다. 트랜스포머트랜스포머는 순환신경망(RNN)을 사용하지 않고 어텐션만을 사용한 신경망이다. 2017년에 "Attention is All you Need"라는 논문을 통해 발표되었다.앞서 Seq2Seq 모델에서 어텐션 매커니즘을 도입함으로써 성능이 향상되었지만 여전히 순환신경망을 기반으로 해서 속도가 느린 단점이 있다. 순환신경망을 사용하면 인코더에서 입력을 차례대로 처음부터 끝까지 계산하고, 디코더에서도 동일하게 차례대로 처리한다. 이를 해결하기 위해 속도가 느린 순환신경망을 제외하고 어텐션만으로 구성된 트랜스포머를 제안하는 것이다 ([그림 5-46] 참조). 트랜스포머는 순서를 표시하기 위해 위치 인코딩(Positiona..
시퀀스 투 시퀀스 모델에 대해 배우고 있다. 이번에는 모델을 학습하고 예측하는 단계를 진행해 볼 것이다. Seq2Seq 모델로 챗봇 구현 세 번째 모델 학습 이번 예제에서 인코더를 어떤 형태로 구성할 것인지 다음 그림을 통해 확인하자. 고정된 길이의 입력이 들어오면 인코딩에서는 먼저 임베딩 레이어를 거쳐 RNN에 순차적으로 입력되어 최종 은닉 상태와 셀 상태를 출력하면 되는 간단한 구조이다. 인코더와 디코더를 클래스로 만든다. 클래스는 아래 그림과 같이 기본적으로 초기화 함수와 실행 함수가 있다. 초기화 함수에서는 실행 함수에 사용할 변수, 레이어를 미리 불러온다. 이때 파라미터 값을 미리 설정하기도 한다. 인코더에서 필요한 임베딩 레이어, LSTM 레이어, 드롭아웃을 체기화 함수에서 불러..
순환 신경망 마지막 학습이 될 것 같다. 지금 공부하는 책은 기초 과정이니 아직 심화 과정의 책이 남아있지만 말이다. 순환층에 드롭아웃 적용하기 완전 연결 신경망과 합성곱 신경망에는 Dropout 클래스를 사용해 드롭아웃을 적용했다. 이를 통해 모델이 훈련 세트에 너무 과대적합되는 것을 막았다. 순환층은 자체적으로 드롭아웃 기능을 적용한다. SimpleRNN과 LSTM 클래스 모두 dropout 매개변수와 recurrent)dropout 매개변수를 가지고 있다. dropout 매개변수는 셀의 입력에 드롭아웃을 적용하고 recurrent_dropout은 순환되는 은닉 상태에 드롭아웃을 적용한다. 하지만 기술적인 문제로 인해 recurrent_dropout을 사용하면 GPU를 사용하여 모델을 훈련하..
순환 신경만에서 빼놓을 수 없는 핵심 기술인 LSTM과 GRU 셀을 사용한 모델을 만들어볼 것이다. 시작하기 전에이 절에서는 고급 순환층인 LSTM과 GRU에 대해 알아보겠다. 이른 층들은 앞에서 배웠던 SimpleRNN보다 계산이 훨씬 복잡하다. 하지만 성능이 뛰어나기 때문에 순환 신경망에서 많이 채택되고 있다.일반적으로 기본 순환층은 긴 시퀀스를 학습하기 어렵다. 시퀀스가 길수록 순환되는 은닉 상태가 담긴 정보다 점차 희석되기 때문이다. 따라서 멀리 떨어져 있는 단어 정보를 인식하는 데 어려울 수 있다. 이를 위해 LSM과 GRU 셀이 발명되었다. LSTM 구조 LSTM은 Long Short-Term Memory의 약자이다. 말 그대로 단기 기억을 오래 기억하기 위해 고안되었다. LSTM..
이어서 단어 임베딩을 사용하는 방법에 대해서 공부해 보겠다. 이것만 하면 2단원 학습은 마치게 된다. 단어 임베딩 사용하기 순환 신경망에서 틱스트를 처리할 때 즐겨 사용하는 방법은 단어 임베딩이다. 단어 임베딩은 각 단어를 고정된 크기의 실수벡트로 바꾸어 준다. 이런 오류가 떠서 코드를 이처럼 수정했다. 경고 메시지 Argument input_length is deprecated는 Embedding 레이어에서 input_length를 명시할 필요가 없다는 뜻이다. TensorFlow 및 Keras의 최신 버전에서는 입력 데이터의 길이를 자동으로 인식한다. 그다음 SimpleRNN 층과 Dense 층은 이전과 동일하다. 하지만 출력 결과 0으로 나온다. model2.summary() 결과..
순환 신경망을 훈련하는 내용을 학습해 보겠다. 순환 신경망 만들기책에 있는 코드 오류가 너무 많아서 다시 이전의 학습했던 코드를 수정하고 다시 만들어보기로 했다. 이제 드디어 출력이 잘 되었다. 순환 신경망 훈련하기 에러 메시지 "ValueError: The filepath provided must end in .keras (Keras model format). Received: filepath=best-simplernn-model.h5"는 ModelCheckpoint 콜백에 제공된 filepath 인자가 올바른 형식이 아님을 나타낸다. Keras는 전체 모델을 저장할 때 파일 경로가 '.keras'로 끝나기를 기대한다. 사용자 코드에서 파일 경로는 'best-simplernn-..
이번 시간에는 텐서플로를 활용해서 실습을 진행해보려고 한다. 시작하기 전에앞 절에서 순환 신경망의 작동 원리를 살펴보았다. 이번 절에서는 대표적인 신경망 문제인 IMDB 리뷰 데이터셋을 사용해 가장 간단한 순환 신경망 모델을 훈련해 보겠다.이 데이터셋을 두 가지 방법으로 변경하여 순환 신경망에 주입해 보겠다. 하나는 원-핫 인코딩이고 또 다른 하나는 단어 임베딩이다. 이 두 가지 방법의 차이점에 대해 설명하고 순환 신경망을 만들 때 고려해야 할 점을 알아보겠다.그럼 먼저 이 절에서 사용할 IMDB 리뷰 데이터셋을 적재해 보겠다. IMDB 리뷰 데이터셋IMDB 리뷰 데이터셋은 유명한 인터넷 영화 데이터베이스인 imdb.com에서 수집한 리뷰를 감상평에 따라 긍정과 부정으로 분류해 놓은 데이터셋이다...
조금 전에 기록했던 글이 모두 날아가서 다시 써야 할 것 같다. 이럴 때 공부 의욕이 가장 상실되지만 다시 하는 수밖에 없다.이어서 순차 데이터와 순환 신경망에 대해서 공부해보려고 한다. 아직은 이론 공부만 있지만 꼭 알아야 하는 개념이다. 셀의 가중치와 입출력순환 신경망의 셀에서 필요한 가중치 크기를 계산해 보겠다. 복잡한 메델을 배 울수록 가중치 개수를 계산해 보면 잘 이해하고 있는지 알 수 있다. 예를 들어 다음 그림처럼 순환층에 입력되는 특성의 개수가 4개이고 순환층의 뉴런이 3개라고 가정해 보겠다. 하나의 샘플은 시퀀스 길이(여기서는 단어 개수)와 단어 표현의 2차원 배열이다. 순환층을 통과하면 1차원 배열로 바뀐다. 이 1차원 배열의 크기는 순환층의 뉴런 개수에 의해 결정..
이번 시간에는 하이퍼 매개변수를 다루는 것과 자연 영상 인식에 대해서 학습해보려고 한다. 3. 하이퍼 매개변수 다루기하이퍼 매개변수는 신경망의 구조 또는 학습관 관련하여 사용자가 설정해야 하는 매개변수다 프로그램 7-4는 옵티마이저에 관련된 하이퍼 매개변수늘 SGD(learning_rage=0.01)과 Adam(learnging_rate=0.001)로 다르게 설정하고 어떤 값이 더 좋은지 비교하여 Adam이 월등히 좋다는 것을 알아냈다. 이처럼 하이퍼 매개변수를 잘 설정해야 신경망이 높은 성능을 발휘한다.하이퍼 매개변수의 최적값을 찾는 일을 하이퍼 매개변수 최적화라 한다. 하이퍼 매개변수 설정 요령신경망의 하이퍼 매개변수는 생각보다 많다. Dense 클래스에는 노드 개수를 정하는 units, 활성 함..
이번 장은 실습 프로그램이 있어서 나름 괜찮은 학습이 될 것 같다. 이전 절에서 프로그램 7-1을 통해 텐서플로가 제공하는 MNIST와 CIFAR-10 데이터셋을 확인하는 프로그래밍 실습을 했다. 여기서는 앞에서 배운 다층 퍼셉트론과 깊은 다층 퍼셉트론을 텐서플로로 구현하고 성능을 측정하는 실험을 한다. 1. 필기 숫자 인식다음 프로그램은 다층 퍼셉트론으로 MNIST를 인식하는 실험이다. 1980~1990년대의 다층 퍼셉트론 시대에 주로 사용하던 SGD 옵티마이저와 현대 딥러닝이 주로 사용하는 Adam 옵티마이저의 성능을 비교하는 실험도 한다. 다층 퍼셉트론으로 필기 숫자 인식텐서플로로 신경망을 학습하고 예측하는 첫 프로그래밍이다. 다층 퍼셉트론으로 MNIST 인식하기(SGD 옵티마이저) 이 코드는..