2장
1 역주 혼동을 피하기 위해 프로그래밍 언어의 클래스를 의미하는 경우에는 ‘파이썬 클래스’나 ‘Sequential 클래스’처럼 명확하게 구분하여 부르겠습니다.
2 역주 넘파이(http://www.numpy.org/)는 파이썬의 대표적인 다차원 배열 라이브러리입니다. 케라스, 텐서플로, 사이킷런 등 많은 머신 러닝 라이브러리가 데이터 구조로 넘파이 배열을 지원합니다.
3 역주 전체 데이터셋(dataset)에서 훈련과 테스트 용도로 나눈 것을 훈련 세트(training set), 테스트 세트(test set)라고 부릅니다. 번역서에서는 전체 set과 나눈 set를 구분하기 쉽도록 ‘셋’과 ‘세트’로 나누어 부르겠습니다.
4 역주 이 책에서 ‘>>>’로 표시되어 있는 코드는 출력과 구분하기 위해서 사용되었습니다. 파이썬이나 IPython의 셸 프롬프트처럼 보이지만 주피터 노트북이나 코랩에서 실습해도 무관합니다.
5 역주 신경망은 입력 데이터의 스케일에 민감하여 적절한 데이터 전처리 과정이 필요합니다. 이미지의 경우 보통 픽셀의 최댓값인 255로 나누어 사용합니다.
6 역주 텐서플로를 비롯하여 딥러닝 라이브러리들은 종종 다차원 배열을 텐서라고 부릅니다. 이 책에서는 넘파이 배열도 텐서라고 하지만 사실 파이썬 커뮤니티에서 넘파이 배열을 텐서라고 부르지는 않습니다. 번역서에서는 문맥에 잘 어울리도록 적절하게 단어를 선택했습니다.
7 역주 넘파이의 배열 스칼라(array scalar)는 수정할 수 없는 0차원의 넘파이 배열이며 프로그래밍 언어의 스칼라 변수와는 다릅니다.
8 역주 여기에서 랭크는 선형대수에서 행렬의 선형 독립 행이나 열을 나타내는 계수(rank)와는 다릅니다.
9 역주 코랩에 대한 자세한 설명은 3장을 참고하세요.
10 역주 배열의 인덱스는 0부터 시작하므로 다섯 번째 이미지의 인덱스가 4입니다.
11 역주 시간 축이 두 번째 축이면 그림 2-3에서 타임스텝이 세로축에 놓여야 하지만 가로축에 표기되어 있습니다. 관례적으로 시간의 흐름을 가로 방향으로 놓기 때문에 편의상 텐서 축의 순서와 맞지 않게 그려져 있습니다.
12 역주 미국의 증권거래소 개장 시간은 오전 9:30분부터 오후 16:00까지 6시간 반으로 390분 동안입니다.
13 역주 일상생활에서 이미지의 크기는 보통 너비×높이로 말하지만 행렬에서는 행이 먼저 나오므로 높이×너비로 표현됩니다.
14 역주 또 다른 인기 많은 딥러닝 라이브러리인 파이토치(PyTorch)는 기본적으로 채널 우선 방식을 사용합니다.
15 역주 tensorflow.keras.backend.set_image_data_format() 함수를 사용하여 “channels_last” 또는 “channels_first”로 지정할 수 있습니다.
16 역주 케라스의 부동 소수점 기본 설정은 float32입니다. tensorflow.keras.backend.set_floatx() 함수를 사용하여 “float16”이나 “float64”로 바꿀 수 있습니다.
17 역주 Dense 클래스의 객체를 Sequential 클래스에 추가할 때 Dense 객체의 build() 메서드가 호출되면서 가중치(커널) W와 편향 b가 생성됩니다. 각각 Dense 객체의 kernel과 bias 인스턴스 변수에 저장됩니다.
18 ‘relu’는 ‘rectified linear unit’의 약어입니다. 역주 렐루(ReLU) 함수는 입력이 0보다 크면 입력을 그대로 반환하고 0보다 작으면 0을 반환합니다.
19 역주 파이썬의 함수 매개변수는 수정 가능한(mutable) 데이터 타입(리스트, 딕셔너리 등)일 경우 참조에 의한 호출(call by reference)처럼 작동하기 때문에 입력 배열 원본을 변경시키지 않으려면 예제 코드처럼 복사하여 사용해야 합니다.
20 역주 대표적인 BLAS 구현으로는 OpenBLAS, 인텔 MKL, ATLAS 등이 있습니다. 아나콘다 파이썬 배포판은 기본적으로 MKL 라이브러리를 사용합니다.
21 역주 벡터-벡터 점곱은 교환 법칙이 성립하지만 행렬-벡터, 행렬-행렬 점곱은 교환 법칙이 성립하지 않습니다.
22 역주 매니폴드는 국부적으로는 저차원의 유클리드 거리로 볼 수 있는 고차원 공간을 말합니다.
23 역주 커널은 여러 가지 의미로 사용됩니다. 1장에서는 서포트 벡터 머신의 커널 함수, 8장에서는 합성곱 신경망의 필터를 지칭합니다.
24 역주 입력 특성이 2개인(2D) 손실 함수는 3차원으로 나타낼 수 있습니다(특성이 더 늘어나면 그림으로 표현하지 못합니다). 그림 2-19에서 손실은 세로축 방향입니다.
25 역주 대표적으로 신경망 알고리즘이 지역 최솟값에 쉽게 갇힐 것으로 생각했지만 고차원 공간에서는 대부분 안장점(saddle point)으로 나타나고 지역 최솟값은 매우 드뭅니다. 예를 들어 1,000개의 파라미터가 있는 공간에서 도함수가 0인 지점의 모든 파라미터가 최솟값일 가능성은 2-1000입니다.
26 역주 이 코드는 모멘텀을 두 번 반복하는 알고리즘인 네스테로프 모멘텀(Nesterov Momentum)을 구현한 것입니다. 기본 모멘텀은 여섯 번째 줄을 w = w + velocity처럼 바꾸어 주면 됩니다. 모멘텀이나 네스테로프 모멘텀 방식을 사용하려면 from tensorflow.keras import optimizers; sgd = optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True); network.compile(optimizer=sgd, ...)처럼 SGD 옵티마이저 객체를 생성하여 직접 전달해야 합니다. 본문과는 달리 일반적으로 momentum 값은 0.9 정도를 많이 사용합니다.
27 역주 그래프 이론에서 비순환 유향 그래프는 에지(edge)에 방향이 있고 한 노드(node)에서 다시 자기 자신으로 돌아올 경로가 없는 그래프를 말합니다.
28 역주 훈련 샘플이 6만 개이므로 128개씩 배치로 나누면 469개의 배치가 만들어지며 마지막 배치의 샘플 개수는 96개가 됩니다.