다층 퍼셉트론은 회귀 작업에 사용할 수 있다. 값 하나를 예측하는 데 출력 뉴런이 하나만 필요하다. 이 뉴런의 출력이 예측된 값이다. 다변량 회귀(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) 라고도 부른다)을 선택하는 것이 좋다.
'Deep learning > 이론(hands on machine learning)' 카테고리의 다른 글
6. 케라스로 다층 퍼셉트론 구현(3) - 서브클래싱 API, 모델 저장과 복원, 콜백 (0) | 2021.06.02 |
---|---|
5. 케라스로 다층 퍼셉트론 구현(2) - 시퀀셜 API 회귀, 함수형 API (0) | 2021.06.02 |
4. 케라스로 다층 퍼셉트론 구현(1) - 시퀀셜 API 분류 (0) | 2021.05.30 |
2. 다층 퍼셉트론과 역전파 (0) | 2021.05.30 |
1. 케라스를 사용한 인공 신경망 소개 - 퍼셉트론 (0) | 2021.05.30 |