딥러닝 모델: 파이토치(71)
-
Pytorch로 시작하는 딥러닝 입문(05-02. 소프트맥스 회귀 이해하기)
로지스틱 회귀를 이용하여 두 개의 선택지 중 한 개를 고르는 이진분류를 해결했다. 이번에는 소프트맥스 회귀를 이용하여 3개 이상의 선택지 중 한 개를 고르는 다중 클래스 분류(Multi-Class Classification)를 실습한다. ♣ 다중 클래스 분류(Multi-class Classification)세 개 이상의 답 중 하나를 고르는 문제는 다중 클래스 분류라고 한다. 아래 문제는 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃 넓이라는 4개의 특성으로부터 setosa, versicolor, virginica 라는 3개의 붓꽃 품종 중 어떤 품종인지를 예측하는 문제로, 전형적인 다중 클래스 분류 문제이다. 입력은 X, 가중치는 W, 편향은 B, 출력은 Y로 가정한다. (Y는 예측값이라는 의미를 가지..
2024.03.02 -
Pytorch로 시작하는 딥러닝 입문(05-01. 원-핫 인코딩/One-Hot Encoding)
♣ 원-핫 인코딩이란? 원-핫 인코딩은 선택해야 하는 선택지의 개수만큼의 차원을 가지면서, 각 선택지의 인덱스에 해당하는 원소에는 1, 나머지 원소는 0의 값을 가지도록 하는 표현 방법이다. 예를 들어 강아지, 고양이, 햄스터라는 3개의 선택지가 있다고 가정해보자. 우선 각 선택지에 순차적으로 정수 인덱스를 부여한다. 임의로 강아지는 0번, 고양이는 1번, 햄스터는 2번 인덱스를 부여한다. 각 선택지에 대해서 원-핫 인코딩 된 벡터는 아래와 같다. 강아지 = [1, 0, 0] 고양이 = [0, 1, 0] 햄스터 = [0, 0, 1] 총 선택지는 3개였으므로 위 벡터들은 모두 3차원의 벡터가 되었다. 이와 같이 원-핫 인코딩으로 표현된 벡터를 원-핫 벡터(one-hot vector)라고 한다. ♣ 원-핫 ..
2024.03.01 -
Pytorch로 시작하는 딥러닝 입문(04-04. 클래스로 파이토치 모델 구현하기)
파이토치의 대부분의 구현체들은 모델을 생성할 때 대부분 클래스를 사용한다. 앞서 배운 로지스틱 회귀를 클래스로 구현해보자. ♣ 모델을 클래스로 구현하기 앞서 로지스틱 회귀 모델은 다음과 같이 구현했다. 이를 클래스로 구현하면 다음과 같다. 클래스 형태의 모델은 nn.Module을 상속받는다. __init__( )에서는 모델의 구조와 동작을 정의하는 생성자를 정의한다. 이는 파이썬에서 객체가 갖는 속성값을 초기화하는 역할로, 객체가 생성될 때 자동으로 호출된다. super( ) 함수를 부르면 여기서 만든 클래스는 nn.Module 클래스의 속성들을 가지고 초기화된다. forward( ) 함수는 모델이 학습데이터를 입력받아서 forward 연산을 진행시키는 함수이다. forward( ) 함수는 model 객..
2024.02.29 -
Pytorch로 시작하는 딥러닝 입문(04-03. nn.Module 로지스틱 회귀 구현하기)
선형 회귀모델의 가설식은 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( )은 W..
2024.02.27 -
Pytorch로 시작하는 딥러닝 입문(04-02. 파이토치로 로지스틱 회귀 구현하기)
♣ 파이토치로 로지스틱 회귀 구현하기 1. 데이터를 텐서로 구현하기 입력 데이터가 x_train, 출력 데이터가 y_train이고 WX = Y를 성립하기 위해서는 가중치 W가 2×1 크기여야 한다. 2. W와 b 선언하기 3. 가설식 세우기 앞선 W와 b는 torch.zeros를 통해 전부 0으로 초기화된 상태이다. 실제값 y_train과 크기가 동일한 6×1의 크기를 가지는 예측값 벡터가 나오는데 모든값이 0.5이다. 이미 파이토치에서 시그모이드 함수를 구현하여 제공하고 있기 때문에 가설식을 더 간단하게 구현할 수도 있다. 이는 앞선 식과 본질적으로 동일한 식이다. 4. 비용함수값(cost) 구하기 우선 현재의 예측값과 실제값을 출력해보자 여섯 개의 원소가 존재하지만 하나의 원소에 대해서만 오차를 구하..
2024.02.25 -
Pytorch로 시작하는 딥러닝 입문(04-01. 로지스틱 회귀: Logistic Regression, 시그모이드 함수)
두 개의 선택지 중에서 정답을 고르는 문제를 이진 분류(Binary Classification)이라고 한다. 그리고 이진 분류를 풀기 위한 대표적인 알고리즘으로 로지스틱 회귀가 있다. 로지스틱 회귀의 알고리즘 이름은 회귀이지만 실제로는 분류 작업에 사용할 수 있다. ♣ 이진 분류(Binary Classification)시험 성적에 따라 합격, 불합격이 기재된 데이터가 있다고 가정한다. 성적이 x라면 합격/불합격 결과는 y이다. 위의 데이터에서 합격을 1, 불합격을 0이라고 할 때 그래프를 그리면 아래와 같다. 이 그래프는 알파벳의 S자 형태로 표현된다. 이러한 x와 y의 관계를 표현하기 위해서는 Wx+b와 같은 직선 함수가 아니라 S자 형태로 표현할 수 있는 함수가 필요하다. 이런 문제에 직선을 사용할..
2024.02.25