첫 번째에서 말하는 특징 표현력을 가진 신경망이란, 같은 클래스 안에서 변동이 있는 패턴, 이를테면, 손글씨처럼 개인 차이 혹은 노이즈가 포함된 상태에서도 바르게 인식할 수 있는 특징으로 변환할 수 있는 것을 말한다. 또, 노이즈가 포함된 경우에는 그 노이즈를 제거할 수 있는 신경망이라는 의미도 있다. 이 신경망을 디노이징 자기부호화기(denoising autoencoder)라고 부른다. 또, 잉여성을 제거하기 위해 규제화 항을 추가한 희소 자기부호화기도 있다.
_70쪽
딥러닝 학습에서 신경망의 종류나 구성도 중요하지만, 가장 중요한 것은 학습 표본이다. 딥러닝이 일반 물체 인식(classification)에서 성공을 거둔 하나의 요인은 대량의 데이터가 있었기 때문이다. 학습 표본으로 사전에 준비된 대량의 데이터 집합이 있으면 그 데이터 집합으로 학습을 수행할 수 있다. 이에 비해, 제한적인 데이터만 확보된 데이터 집합이나 직접 데이터를 수집해서 충분한 데이터를 모으지 못한 경우에는 확보된 데이터를 최대한 효과적으로 사용할 수 있는 방법인 데이터 확장을 생각해 볼 수 있다. 먼저, 충분히 갖춰진 데이터 집합으로 ImageNet과 Places를 소개한다. 그리고 제한적인 데이터에 대해 데이터의 양을 늘릴 수 있는 데이터 확장에 대해서도 설명하겠다.
_82쪽
그럼, 제한된 학습 표본밖에 없다면 딥러닝 기법을 이용한 학습을 수행하기 위해서는 어떻게 해야 할까? 생각해 볼 수 있는 첫 번째 방법으로, 지금 확보한 표본을 기초로 하는 조금 변이된 데이터를 추가하여 이미지 수를 늘리는 데이터 확장(data augmentation)이 있다. 데이터 확장은 표본에 평행이동이나 회전, 거울 반사 등을 적용하여 약간의 변화를 일으킨 새로운 표본을 만드는 방법이다. 여기에 쓴 변화 외에도 기하학적 혹은 이미지의 농담이나 색을 변경하는 경우도 있고, 랜덤 노이즈나 얼룩을 추가하는 경우도 있다.
_87쪽
딥러닝에서 일반화 성능을 향상시키기 위해 쓰이는 방법에는 알고리즘뿐 아니라, 학습 표본도 매우 중요한 영향을 끼친다. 학습 표본을 대량으로 수집하는 것은 상당히 어려우므로, ImageNet이나 Places와 같은 공개 데이터 집합을 이용하면 매우 편리하다. 그리고 이들을 단순히 학습에 이용하는 데 그치지 않고, 클래스 내의 변이를 억제하는 전처리를 가하는 것도 중요하다. 또 알고리즘적 수단으로서는 과학습을 억제하기 위한 드롭아웃과 드롭커넥트가 매우 효과적인 것으로 알려져 있으며, 현재의 딥러닝에서는 필수 불가결한 기법이 되고 있다.
_101쪽
이번 장에서는 현재 나온 많은 도구 중에서 Theano와 이를 이용한 Pylearn2, 이미지 인식 분야에서 확고히 자리 잡은 Caffe, 새로 공개된 도구 중 가장 주목을 받고 있는 Chainer와 텐서플로에 대해 그 특징과 사용법을 소개하였다. 이들 도구는 사용법이나 구현하기 위한 코드 구조도 다르다. 또, 신경망의 층이나 유닛 등에 대한 명칭도 서로 다르기 때문에 혼란스러울 수도 있다. 딥러닝을 이제 막 시작하려는 사람은 Caffe나 Chainer, 새로운 알고리즘을 개발하려는 사람은 Theano나 텐서플로를 사용하는 것이 좋다.
---p.179
딥러닝이 세상의 주목을 받기 시작한 것은 “신경망이 이미지를 인식했다”라고 구글이 발표할 무렵부터입니다. 그후 DQN(Deep Q-Network)이라는 알고리즘이 비디오 게임 제어를 학습하고, 나아가 신경망을 이용한 머신러닝 시스템이 바둑 세계 챔피언을 이기는 등 놀라운 결과를 만들어 내고 있습니다. 그리고 이러한 딥러닝의 해설 기사에 반드시 등장하는 것이 바로 다수의 뉴런이 여러 층 결합된 ‘다층 신경망’을 도식화한 그림입니다. 이 신경망 내에서 대체 무슨 일이 일어나는 것인지, 딥러닝 알고리즘은 어떤 원리로 학습하는 것인지를 ‘어떻게 해서든 이해하고 싶다!’라고 느끼는 여러분이 바로 이 책의 대상 독자입니다.
--- p.viii
딥러닝은 ‘심층학습’이라고도 하며, 용어만 보면 뭔가 심오한 이론인 것처럼 느껴진다. 그러나 기본적으로는 앞서 그림 1 - 11과 같은 다층 신경망을 이용한 머신러닝에 지나지 않는다. 다만, 단순히 계층을 증가시켜 복잡화하는 것이 아니라 해결해야 할 문제에 맞게 각각의 노드에 특별한 역할을 부여하거나 노드 간의 연결 방식을 다양하게 연구한 것이다. 무조건 노드를 증가시켜 복잡화하는 것이 아니라 각 노드의 역할을 생각하면서 특정 의도를 갖고 구성한 신경망이라고 생각할 수 있다.
--- p.13
그렇다면 미니 배치 혹은 확률적 경사 하강법을 이용하는 이유는 무엇일까? 여기에는 크게 두 가지 이유가 있다. 첫 번째 이유는 트레이닝 세트 데이터가 대량으로 있을 경우에 1회당 계산량을 줄일 수 있다는 점이다. 일반적으로 특정 함수의 기울기 벡터를 구할 때는 계산 처리량이 많아진다. 텐서플로에서는 기울기 벡터 계산이 자동화되어 있어서 이용자가 계산 내용을 의식하지는 않지만, 그렇더라도 계산 처리량에는 주의가 필요하다. 트레이닝 세트에서 대량의 데이터를 투입하면 트레이닝 알고리즘의 계산이 상당히 느려지거나 대량의 메모리를 소비하므로 실용성이 떨어지게 된다.
--- p.92
특히, 복잡한 신경망을 이용할 경우 텐서보드로 오차 함수의 변화를 살펴보면 그림 3 - 25와 같이 오차 함수의 값이 계단 모양으로 변화하는 경우가 있다. 이것이 바로 극솟값 주위를 얼마간 돌아다닌 후에 갑자기 최솟값 방향으로 향하는 움직임에 해당한다. 극솟값을 갖는 위치가 여러 개 있을 경우에는 몇 단계에 걸쳐 오차 함수의 값이 변화하는 경우도 있다.
--- p.135
이번 장에서는 합성곱 필터와 풀링 계층을 2단으로 쌓은 CNN을 실제로 구성하고, 텐서플로를 이용해 최적화해서 어떤 결과가 나오는지를 확인해 보겠다. 여기서는 이를 위한 준비 과정으로 2단계 필터가 이미지 데이터에 대해 어떻게 작용하는지를 정리한다. 또한, 파라미터 최적화를 효율적으로 실시하는 데 필요한 CNN 특유의 테크닉에 관해 추가 설명한다. 구체적인 설명을 위해 첫 번째와 두 번째 단계의 합성곱 필터의 개수를 각각 32개와 64개로 가정한다.
--- p.179