본문 바로가기

다중 분류5

22. 다중회귀-소프트맥스 함수 역전파(고급, 쉬운 방법) 이번 시간엔 소프트맥스 함수 역전파를 고급지게(?) 다뤄볼 것이다. 왜냐하면 기존에 다룬 방법(8.다중분류 구현하기(기초실습), 9.다중분류 구현하기(심화실습) ) 은 너무 비효율적이기 때문이다. (그래도 고급을 이해하기 위해서 읽고 오시라, 기본 수학적 배경 없으면 읽기 힘들 수 있다.) 일일이 소프트맥스 미분 행렬을 만드는 것은 너무나도 귀찮은(...) 일이다. 아래는 IRIS 꽃 분류에 사용하였던 소프트맥스 미분 행렬이다. 3개 출력이므로 (3, 3) Size의 행렬이 된다. dsmax_dg_matrix = np.array([[(smax_WXB1*(1-smax_WXB1))[0], -(smax_WXB1*smax_WXB2)[0], -(smax_WXB1*smax_WXB3)[0]], [-(smax_WXB1.. 2022. 2. 10.
9. 다중 분류 구현하기(심화실습) 이전시간에 언급한 대로, Iris 꽃 데이터 중 일부(30개)를 불러와 학습해 볼 것이다. 아래 파일을 임포트한다. 사용하기 쉽게 미리 원-핫 인코딩을 하였다. 1. 데이터 준비 파일을 임포트하고 슬라이스를 통해 입력데이터 input, 목표값 데이터 target으로 분리한다. import numpy as np from numpy import genfromtxt np.random.seed(220106) data = genfromtxt('IRIS_tiny_onehot.csv', delimiter=',', skip_header=1) input = data[:, 0:4] target = data[:, 4:7] W = np.random.randn(3, 4) B = np.random.randn(3, 1) learn.. 2022. 1. 9.
8. 다중 분류 구현하기(기초실습) 이전시간에 소프트맥스, 크로스엔트로피를 이용하여 아이리스 꽃 분류 문제를 어떻게 해결할 수 있는지 이론적으로 알아보았다. 이번엔 단 한개의 데이터를 이용하여 이론을 넘파이 코드로 작성하고 pytorch와 비교해보는 시간을 갖도록 하겠다. 1. 데이터 정의 입력 input, 목표값 target, 가중치 W, 편향 B, 학습률 learning_rate를 정의한다. import numpy as np np.random.seed(220106) input = np.array([[1.2, 2.4, 3.6, 1.8]], dtype=np.float32) target = np.array([[0, 0, 1]], dtype=np.int32) W = np.random.randn(3, 4) B = np.random.randn(3.. 2022. 1. 9.
7. 다중 분류 구현하기(이론) 이번 시간에는 소프트맥스 함수로 출력되는 다중 분류 구현하기를 이론적으로 살펴보겠다. 대표적인 문제로 아이리스(Iris) 꽃 분류 문제가 있다. 아래 자료를 살펴보자. 1. 데이터 살펴보기 1) 데이터 속성 : 4가지 (1) sepal_length : 꽃잎 길이 (2) sepal_width : 꽃잎 너비 (3) petal_lenth : 꽃받침 길이 (4) petal_width : 꽃받침 너비 2) 데이터 분류 : 3가지(setosa, versicolor, virginica) 4가지의 데이터 속성을 입력받아 3가지의 아이리스 꽃 분류를 하는 문제이다. 2. 정의하기 1) 입력값(input)을 아래와 같이 정의한다. 2) 목표값(target) 아래와 같이 정의한다. 3) 가중치(weight)와 편향(bias.. 2022. 1. 8.