더북(TheBook)

3장

 

  1 역주 코드 3-1에서 잘 볼 수 있듯이 신경망의 첫 번째 층은 은닉층입니다. 하지만 그림 3-1과 같이 그림으로 나타낼 때 입력을 하나의 층으로 표현하기도 합니다. 종종 편의상 입력층이란 용어도 사용하지만, 실제로 가중치 있는 밀집 층이 아니므로 혼동하지 마세요.

 

  2 역주 선형 활성화 함수란 f(x) = x에 해당합니다. 즉, 실제적으로 활성화 함수를 적용하지 않는 것이며 입력을 그대로 통과시킵니다.

 

  3 역주 12개의 입력이 은닉층에 있는 50개의 유닛에 모두 독립적으로 연결되기 때문에 12 * 50개의 파라미터가 필요합니다. 이런 이유로 밀집 층을 종종 완전 연결 층(fully connected layer)이라고도 부릅니다.

 

  4 활성화 함수란 용어는 활동 전위(세포막의 전압 변화)를 통해 서로 통신하는 생물학적 뉴런의 연구로부터 유래되었습니다. 전형적인 생물학적 뉴런은 시냅스(synapse)라 불리는 접점을 통해 여러 개의 상위 뉴런으로부터 입력을 받습니다. 상위 뉴런은 다른 속도로 활동 전위를 전송하여 신경 전달 물질을 방출하고 시냅스에 있는 이온 채널의 개폐를 조절합니다. 이로 인해 수신 뉴런에서 세포막의 전압이 변합니다. 이것이 밀집 층의 유닛에서 본 가중치 합과 다르지 않습니다. 전위가 특정 임계값을 넘을 때만 수신 뉴런이 실제로 활동 전위를 생산합니다(즉, 활성화됩니다). 그리고 이때 하위 뉴런의 상태에 영향을 미칩니다. 이런 관점에서 전형적인 생물학적 뉴런의 활성화 함수는 렐루(relu) 함수와 조금 비슷합니다(그림 3-2의 오른쪽). 입력의 임계값 아래는 데드존(dead zone)이고 임계값을 넘으면 입력에 선형적으로 증가합니다(적어도 어떤 포화 상태까지. 렐루 함수에는 이런 상태가 없습니다).

 

  5 역주 사실 렐루 함수는 원점(x = 0)에서 미분 가능하지 않습니다. 하지만 텐서플로를 포함해 많은 프레임워크가 원점에서 미분 값으로 0을 사용하며 실전에서 잘 동작합니다.

 

  6 역전파에 대해서는 2.2.2절을 참고하세요.

 

  7 역주 첫 번째 은닉층의 유닛 50개에서 나온 출력이 두 번째 은닉층의 유닛 50개에 모두 연결되기 때문에 50 * 50개의 가중치가 필요합니다.

 

  8 역주 비선형 은닉층은 비선형 활성화 함수를 사용한 은닉층을 의미합니다.

 

  9 역주 번역서 예제 데모 사이트(http://ml-ko.kr/tfjs/boston-housing)에서 신경망 회귀 모델 훈련 (은닉층 한 개 + 시그모이드 없음) 버튼을 눌러 시그모이드 함수가 없는 회귀 모델을 테스트해 볼 수 있습니다.

 

10 Marco Tulio Ribeiro, Sameer Singh, and Carlos Guestrin, “Local Interpretable Model-Agnostic Explanations (LIME): An Introduction,” O’Reilly, 12 Aug. 2016, http://mng.bz/j5vP.

 

11 Chris Olah et al., “The Building Blocks of Interpretability,” Distill, 6 Mar. 2018, https://distill.pub/2018/building-blocks/.

 

12 역주 TensorFlow.js의 클래스와 메서드에 지정할 수 있는 매개변수는 모두 하이퍼파라미터로 볼 수 있습니다.

 

13 역주 학습률과 같이 연속적인 값을 가지는 하이퍼파라미터는 이 예와 같이 로그 스케일로 지정하는 것이 일반적입니다.

 

14 James Bergstra and Yoshua Bengio, “Random Search for Hyper-Parameter Optimization,” Journal of Machine Learning Research, vol. 13, 2012, pp. 281–305, http://mng.bz/WOg1.

 

15 Will Koehrsen, “A Conceptual Explanation of Bayesian Hyperparameter Optimization for Machine Learning, Towards Data Science, 24 June 2018, http://mng.bz/8zQw.

 

16 Rami M. Mohammad, Fadi Thabtah, and Lee McCluskey, “Phishing Websites Features,” http://mng.bz/E1KO.

 

17 역주 양성 샘플은 좋은 샘플을 의미하는 것이 아니라 이진 분류에서 타깃이 네/아니요의 ‘네(Yes)'에 해당하는 샘플을 말합니다. 이 문제에서는 피싱 웹 페이지가 양성이며, 모델이 찾으려는 대상입니다.

 

18 역주 3장 이후의 예제는 모두 2장에서 rickiepark/deep-learning-with-javascript 저장소를 클론하거나 내려받았다고 가정합니다. 또한, 번역서 데모 사이트(http://ml-ko.kr/tfjs)에 브라우저로 접속하여 바로 실행해 볼 수 있습니다.

 

19 역주 머신 러닝에서 클래스는 가능한 타깃 레이블의 집합입니다. 종종 클래스와 레이블을 엄격히 구분하지 않고 혼용합니다. 책에서 자바스크립트 클래스를 의미할 때는 클래스 이름과 함께 사용되므로 혼동하지 마세요.

 

20 역주 각 옵티마이저에 대한 이론적인 설명은 <핸즈온 머신러닝 2판>(한빛미디어, 2020) 11장을 참고하세요.

 

21 역주 tf.train.momentum() 함수의 useNesterov 매개변수를 True로 지정하면 네스테로프 모멘텀 최적화(Nesterov momentum optimization)가 됩니다.

 

22 역주 RPSProp이나 AdaDelta와 다르게 모든 그레이디언트를 누적하는 Adagrad 옵티마이저(tf.train.adagrad)도 있습니다.

 

23 역주 Adagrad, RMSPro, AdaDelta, ADAM, AdaMax는 모두 훈련 과정에서 학습률을 조정하는 적응적 학습률을 사용하는 옵티마이저입니다.

 

24 역주 또는 혼동 행렬이라고도 부릅니다.

 

25 역주 거짓 양성을 의미합니다.

 

26 그리스 문자 중 세 번째 글자인 감마 문자

 

27 역주 정밀도-재현율 곡선에 대한 자세한 정보는 <핸즈온 머신러닝 2판>(한빛미디어, 2020) 3장을 참고하세요.

 

28 binaryCrossentropy의 실제 코드는 prob1 - prob이 정확히 0이 되는 것을 방지해야 합니다. 이 값이 바로 log 함수로 들어가면 무한대가 되기 때문입니다. 이를 위해 log 함수에 전달하기 전에 prob1 - prob에 아주 작은 양수 값을 더합니다(보통 1e-6이며 입실론(epsilon) 또는 퍼지 계수(fudge factor)라 불립니다).

 

29 다중 분류(multiclass classification)와 다중 레이블 분류(multilabel classification)를 혼동하지 마세요. 다중 레이블 분류에서는 개별 입력 샘플이 여러 개의 출력 클래스에 해당할 수 있습니다. 예를 들면 입력 이미지에 있는 여러 종류의 객체를 감지하는 경우입니다. 한 이미지는 사람 하나만 포함할 수 있지만 다른 이미지는 사람, 자동차, 동물을 포함할 수 있습니다. 다중 레이블 분류 모델은 클래스 개수에 상관없이 입력 샘플이 속한 모든 클래스를 출력해야 합니다. 이 절은 다중 레이블 분류에 대해서는 다루지 않습니다. 대신 간단한 단일 레이블 다중 분류에 초점을 맞춥니다. 모든 입력 샘플은 두 개 이상의 클래스 중에서 정확히 하나의 클래스에 해당됩니다. 역주 다중 레이블 분류는 각 클래스에 대한 이진 값(True/False)을 출력합니다. 각 클래스에 대해 여러 개의 레이블을 출력하는 경우는 다중 출력 분류(multioutput classification)라 부릅니다. 다중 레이블 분류와 다중 출력 분류에 대한 자세한 내용은 <핸즈온 머신러닝 2판>(한빛미디어, 2020) 3장을 참고하세요.

 

30 역주 연속적인 실수가 아니라 정해진 몇 개의 값 중 하나로 표현되는 특성을 범주형 특성(categorical feature)이라고 부릅니다. 보통 타깃은 범주 대신 클래스로 표현하지만, 이 책은 특성과 타깃에 모두 범주라는 표현을 사용합니다. category가 머신 러닝의 범주가 아닌 일반 동사의 의미로 사용될 때는 혼동을 피하기 위해 ‘카테고리'로 번역합니다.

 

31 targets와 달리 ys는 평범한 자바스크립트 배열이 아닙니다. 이 변수는 GPU 메모리를 지원하는 텐서 객체입니다. 따라서 보통의 console.log() 함수로 값을 출력할 수 없습니다. print()는 GPU에 있는 값을 추출하기 위한 특별한 메서드로, 크기를 인식하여 읽기 쉬운 형태로 콘솔에 출력합니다.

 

32 역주 이 말은 하나의 실수를 사용해 세 개의 클래스를 표현하는 것이 적절하지 않다는 뜻입니다.

 

33 역주 또는 번역서의 데모 페이지(http://ml-ko.kr/tfjs/iris)에서 개발자 도구의 자바스크립트 콘솔(Ctrl + Shift + J 또는 Command + Option + J)을 열어 입력할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.