2024. 2. 27. 11:29ㆍ딥러닝 모델: 파이토치
선형 회귀모델의 가설식은 H(x) = Wx+b 이다. nn.Linear( )를 이용해서 이 가설식을 구현할 수 있다.
로지스틱 회귀의 가설식은 H(x) = sigmoid(Wx+b) 이고, 파이토치에서는 nn.Sigmoid( )를 이용해서 시그모이드 함수를 구현하므로 결과적으로 nn.Linear( )의 결과를 nn.Sigmoid( )를 거치게 하면 로지스틱 회귀의 가설이 된다.
♣ nn.Linear와 nn.Sigmoid로 로지스틱 회귀 구현하기
1. 훈련 데이터를 텐서로 선언하기
2. nn.Sequential을 이용하여 로지스틱 회귀 구현하기
nn.Sequential( )은 nn.Module 층을 차례로 쌓을 수 있도록 한다. 뒤에서는 이를 이용하여 인공신경망을 구현한다.
nn.Sequential( )은 Wx+b와 같은 수식과 시그모이드 함수 등과 같은 여러 함수들을 연결하는 역할을 한다.
이를 이용해서 로지스틱 회귀를 구현해보자.
현재 W와 b는 랜덤 초기화된 상태이다. 이 상태에서 훈련 데이터를 넣어 예측값을 확인해보자
6×1 크기의 예측값 텐서가 출력된다. 하지만 현재 W와 b는 임의의 값이므로 현재의 예측은 의미가 없다.
이제 경사하강법을 사용하여 훈련해보자. 총 100번의 epoch를 수행한다.
이제 기존의 훈련 데이터를 입력하여 예측값을 확인하자.
0.5를 넘으면 True, 그보다 낮으면 False로 간주하는데 실제 y_train 값이 [[0], [0], [0], [1], [1], [1]] 이고, 이는 False, False, False, True, True, True에 해당하므로 전부 실제값과 일치하도록 예측했다는 것을 알 수 있다.
훈련 후의 W와 b의 값을 출력해보자.
이 앞 챕터에서 nn.Module을 사용하지 않고 로지스틱 회귀를 구현한 실습에서 얻었던 W, b와 유사하다.
♣ 인공신경망으로 표현되는 로지스틱 회귀
로지스틱 회귀는 인공신경망으로 간주할 수 있다.
위의 인공신경망 그림을 보면 각 화살표는 입력과 곱해지는 가중치 또는 편향이다. 각 입력에 대해 검은색 화살표는 가중치가, 회색 화살표는 편향이 곱해진다. 각 입력 x는 각 가중치 s와 곱해지고, 편향 b는 상수 1과 곱해지는 것으로 표현되었다.
그리고 출력하기 전에 시그모이드 함수를 지나게 된다.
결과적으로 위의 인공신경망은 다음과 같은 다중 로지스틱 회귀를 표현한다.
* 시그모이드 함수는 인공신경망의 은닉층에서는 거의 사용되지 않는다.
'딥러닝 모델: 파이토치' 카테고리의 다른 글
Pytorch로 시작하는 딥러닝 입문(05-01. 원-핫 인코딩/One-Hot Encoding) (0) | 2024.03.01 |
---|---|
Pytorch로 시작하는 딥러닝 입문(04-04. 클래스로 파이토치 모델 구현하기) (0) | 2024.02.29 |
Pytorch로 시작하는 딥러닝 입문(04-02. 파이토치로 로지스틱 회귀 구현하기) (0) | 2024.02.25 |
Pytorch로 시작하는 딥러닝 입문(04-01. 로지스틱 회귀: Logistic Regression, 시그모이드 함수) (0) | 2024.02.25 |
Pytorch로 시작하는 딥러닝 입문(03-08. 벡터와 행렬 연산 복습하기) (0) | 2024.02.24 |