Deep learning/이론(hands on machine learning)

3. 회귀, 분류를 위한 다층 퍼셉트론(MLP-Multi Layer Perceptron)

jwjwvison 2021. 5. 30. 21:13

다층 퍼셉트론은 회귀 작업에 사용할 수 있다. 값 하나를 예측하는 데 출력 뉴런이 하나만 필요하다. 이 뉴런의 출력이 예측된 값이다. 다변량 회귀(multivariate regression)에서는 (즉, 동시에 여러 값을 예측하는 경우) 출력 차원마다 출력 뉴런이 하나씩 필요하다.

일반적으로 회귀용 다층 퍼셉트론을 만들 때 출력 뉴런에 활성화 함수를 사용하지 않고 어떤 범위의 값도 출력되도록 한다. 하지만 출력이 항상 양수여야 한다면 출력층에 ReLU 활성화 함수를 사용할 수 있다. 또는 softplus 활성화 함수를 사용할 수 있다. 마지막으로 어떤 범위 안의 값을 예측 하고 싶다면 로지스틱 함수나 하이퍼볼릭 탄젠트 함수를 사용하고 레이블의 스케일을 적절한 범위로 조정할 수 있다. 로지스틱 함수는 0에서 1사이를 출력하고 하이퍼볼릭 탄젠트 함수는 -1에서 1사이를 출력한다.

훈련에 사용하는 손실 함수는 전형적으로 평균 제곱 오차이다. 하지만 훈련 세트에 이상치가 많다면 대신 평균 절댓값 오차를 사용할 수 있다. 또는 이 둘을 조합한 후버(Huber) 손실을 사용할 수 있다.


이진 분류 문제에서는 로지스틱 활성화 함수를 가진 하나의 출력 뉴련만 필요하다. 다층 퍼셉트론은 다중 레이블 이진 분류(multilabel binary classification)문제를 쉽게 처리할 수 있다. 예를 들어 이메일이 스펨 메일인지 아닌지 예측하고 동시에 긴급한 메일인지 긴급하지 않은 메일인지 예측하는 이메일 분류 시스템이 있다. 각 샘플이 3개 이상의 클래스 중 한 클래스에만 속할 수 있다면 (예를 들어 숫자 이미지 분류에서 클래스 0에서 9까지) 클래스마다 하나의 출력 뉴런이 필요하다. 출력층에는 소프트맥스 활성화 함수를 사용해야 한다. 소프트맥스 함수는 모든 예측 활률을 0과 1 사이로 만들고 더했을 때 1이 되도록 만든다(클래스가 서로 베타적일 경우 필요하다). 이를 다중 분류(multicalss classification)라고 부른다.


확률 분포를 예측해야 하므로 손실 함수에는 일반적으로 크로스 엔트로피 손실(cross-entropy-loss, 또는 로그 손실(log loss) 라고도 부른다)을 선택하는 것이 좋다.