전체 글 75

[Deep Learning with Python] 4-4. 합성곱 신경망을 사용한 시퀀스 처리

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.6을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 합성곱 신경망은 입력의 부분 패치에서 특성을 뽑아내어 구조적인 표현을 만들고, 데이터를 효율적으로 사용하기 때문에 컴퓨터 비전 문제에 잘 맞습니다. 이는 시퀀스 처리와도 깊게 관련되어 있으며, 시간을 2D이미지의 높이와 너비처럼 공간의 차원으로 다룰 수 있..

[Deep Learning with Python] 4-3. 순환 신경망의 고급 사용법

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.6을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 기온 예측 문제 이번에는 시퀀스 데이터 중 하나인 온도 예측 문제에 RNN을 적용해볼 것입니다. 데이터를 사용하여 마지막 데이터 포인로부터 24시간 후의 온도를 예측해볼 것입니다. 이를 위해 다음과 같은 기법들을 사용해볼 것입니다. - 순환 드롭아웃 : 순..

[Deep Learning with Python] 4-2. 순환 신경망 이해하기

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.6을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 완전 연결 신경망이나 합성곱 신경망의 특징은 메모리가 없다는 점입니다. 네트워크에 주입되는 입력은 독립적이며, 입력 간에 유지되는 상태가 없습니다. 이런 네티워크로 시퀀스나 시계열 데이터 포인트를 처리하기 위해서는 네트워크에 전체 시퀀스를 주입해야 합니다...

[Deep Learning with Python] 4-1. 텍스트 데이터 다루기

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.6을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 이번에는 텍스트, 시계열 또는 일반적인 시퀀스 데이터를 처리할 수 있는 딥러닝 모델에 대해 알아봅니다. 시퀀스 데이터를 처리하는 기본적인 딥러닝 모델은 순환 신경망과 1D 합성곱 신경망 이렇게 2가지입니다. 1. 텍스트 데이터 다루기 텍스트는 가장 흔한 시..

[Deep Learning with Python] 3. 컴퓨터 비전을 위한 딥러닝

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.5를 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 합성곱 신경망 합성곱 연산 완전 연결 층과 합성곱 층의 근본적인 차이는 다음과 같습니다. - Dense 층은 입력 특성 공간에 있는 전역 패턴을 학습합니다. - 합성곱 층은 지역 패턴을 학습합니다. 합성곱 층에서 지역 패턴을 학습할 때는 일반적으로 3x3 ..

Deep Learning with Python] 2. 신경망 시작하기

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.3을 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 신경망의 구조 층 : 딥 러닝의 구성 단위 층(layer)은 하나 이상의 텐서를 입력으로 받아서 하나 이상의 텐서를 출력하는 데이터 처리 모듈입니다. 상태가 없는 층의 종류도 있지만, 대부분의 경우 가중치라는 층의 상태를 갖습니다. 적절한 텐서 포맷과 데이..

[Deep Learning with Python] 1. 신경망의 수학적 구성 요소

이번 포스트는 케라스 창시자에게 배우는 딥러닝(Deep Learning with Python)의 ch.2를 참고하였습니다. 이번 포스트를 읽기 전에, [Do it!] 시리즈를 먼저 읽는것을 권장합니다. 이 포스트에서는 [Do it!] 시리즈에 중복해서 나온 내용들을 많이 생략하였습니다. 이 책은 딥 러닝의 입문서로서는 적절하지 않다고 생각됩니다. 딥 러닝에 대한 어느정도 지식이 있고, 케라스의 사용방법에 대해 좀 더 자세히 알고 싶은 분께 권장합니다. 먼저, 복습해볼 겸 간단하게 MNIST 데이터 세트를 사용하여 케라스를 사용하여 완전 연결 신경망을 구성해보겠습니다. 1. 데이터를 불러오고, 훈련 데이터의 형태를 확인해봅니다. from keras.datasets import mnist (train_ima..

[Do it!]7. 텍스트 분류하기 - 순환 신경망

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.280~317을 참고하였습니다. 순차 데이터와 순환 신경망 순차 데이터 ​지금까지 사용했던 데이터는 각 샘플이 독립적이라고 가정했습니다. 따라서 에포크마다 전체 샘플을 무작위로 섞을 수 있었습니다. 하지만, 우리가 배울 데이터 중에서는 독립적이지 않은 샘플이 많이 있습니다. 예를 들면, 날씨 정보나 텍스트 같은 경우입니다. 예를 들어 날씨 데이터의 경우, 오후 3시의 온도가 20도였다면, 오후 12시~2시 또는 오후 4시~6시의 온도는 20도에서 그렇게 크게 벗어나지 않을 것이라는 것을 압니다. 또한, 오후 4시~6시는 오후 3시의 온도보다 더 내려갈 것이라는 것 또한 압니다. 즉, 어떤 한 데이터를 알면 다른 데이터에 대한 정보도 얻을..

[Do it!] 6. 이미지 분류하기 - 합성곱 신경망

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.234~277을 참고하였습니다. 기본적인 합성곱(convolution)을 하는 방법은 알고있다는 전제 하에 진행하겠습니다. 교차 상관(cross validation) 합성곱 신경망은 합성곱을 사용하는 대신, 교차 상관을 사용합니다. 교차 상관은 합성곱과 매우 비슷합니다. 계산 과정은 합성곱과 똑같으며, 미끄러지는 배열을 뒤집지 않고 그대로 사용합니다. 즉 아래와 같은 배열이 있을 때, 왼쪽은 합성곱, 오른쪽은 교차 상관입니다. 교차 상관을 사용하는 이유는, 훈련하기 전에 가중치 배열을 무작위로 초기화했기 때문입니다. 위에서 사용한 '미끄러지는 배열'이 합성곱 신경망에서의 가중치에 해당합니다. 가중치 배열은 무작위로 초기화됐기 때문에 뒤집..

[Do it!] 5. 다중 분류

이 포스트는 Do it! 정직하게 코딩하며 배우는 딥러닝 입문 pp.197~231를 참고하였습니다. 여러 개의 이미지를 분류하는 다층 신경망 만들기 ​이진 분류에서는 다음과 같은 다층 신경망을 사용했습니다. 0.5를 기준으로 해서 출력층의 활성화 값이 이보다 크면 양성, 작으면 음성으로 분류했습니다. 다중 분류를 위한 신경망을 구하는 방법은 위의 구조에서 출력층의 개수만 추가하면 됩니다. 이진 분류와 다중 분류를 위한 신경망의 구조를 비교해보면, 출력층의 개수만 다릅니다. 이진 분류는 양성 클래스에 대한 확률 $\hat{y}$ 하나만 출력하지만, 다중 분류는 각 클래스에 대한 확률을 출력합니다. 예를 들어 클래스가 3개라면 $\hat{y}_1, \hat{y}_2, \hat{y}_3$ 이렇게 3개의 출력이..