본문 바로가기

분류 전체보기

(120)
Softmax function and cross-entropy loss 개요 multi-class classification 상황에서는 예측값을 구할 때 보통 sigmoid function을 사용하지 않고 Softmax function을 사용한다고 한다. 그리고 이 softmax function을 사용하기 위해서는 cost function으로 cross-entropy loss function을 사용한다고 한다. 이에 대해 알아보자. Sigmoid function 복기 binary classification에서 사용했던 sigmoid function에는 1개의 feature값만 넣어서 확률을 계산할 수 있었다. 즉, y = 1일 때 sigmoid function에 feature값을 넣어 y=1일 때에 feature도 1일 상대적 확률을 나타냈다. 우리는 x 대신 z로 정의했고..
Cost function for Logistic regression 개요 지도 학습에 속하는 Regression과 Classification 중 Classification의 범주에 들어가는, Logistic regression에 대해 알아보았다. 우리는 보통 우리에게 주어진 task를 해결하기 위해 아래와 같은 과정을 겪게 된다고 한다. 다양한 모델 중에서 한 가지를 선택 다양한 cost function 중에서 한 가지를 선택 gradient descent 과정을 진행 최적의 가중치 획득 이 과정에서 우리는 스팸 메일, 악성 종양 등의 분류를 위해 classification의 logistic regression model을 택했다. 이제 cost function에 대해 알아볼 시간이다. Linear regression에서 만났던 cost function Linear re..
2xn 타일링 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 제한 사항 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 문제를 보고 든 생각 적어보면 뭔가 규칙이 보이지 않을까 싶었다.그래서 무작정 노트에 타일을 그렸다. 나의 아이디어 규칙이 보이긴 보였다.n이 짝수일 때마다 새로운 규칙이 만들어졌고, 타일이 늘어나는 개수도 규칙적인 모습이 있었다.하지만 이건 코드로 짤 수가 없는 규칙이라는 생각이 들었고 분명 다른 규칙성이 있을 것 같았다. 답답한 마음에 결국 검색을 이용했다. 검색을 통해 알게 된 내용 내가 규칙성을 찾기 위해 노트에 적은 그 내용들이 이미 ..
Feature scaling에 대해 개요 Feature scaling이란 무엇인지, 언제 쓰이는 것인지 알아보자. Feature scaling이 필요한 이유 각 feature에는 저장되어 있는 데이터가 존재할 것이다. 예를 들어, 집값을 예측하는 모델을 만들기 위해서 데이터셋을 준비한다고 해보자. 땅의 크기, 건축년도, 방의 개수 등의 다양한 feature들이 집값 예측에 영향을 줄 것이다. 생각해보면 이 3개의 feature들은 모두 data값의 단위가 달라서 scale이 천차만별이다. 땅의 크기와 건축년도는 둘 다 천의 자리 숫자로 나오기에 그렇다고 쳐도 땅의 크기와 방의 개수를 비교해보자. 아래와 같은 데이터쌍이 존재한다고 해보자. 땅의 크기: 190m^2 방의 개수: 5개 각 데이터를 위한 단위 자체가 다르기에 값의 scale에 차..
경사하강법 개요 머신러닝 중 선형회귀에서 쓰이는 방법론인 경사하강법이 무엇인지 알아보자. 지도학습인 선형회귀의 경사하강법으로 어떻게 데이터의 값에 가장 근접하게 예측할 수 있을까? 경사하강법? 경사하강법은 linear regression의 방법론이다. 지도학습 중 하나인 linear regression의 방법론답게 학습을 위해서는 학습데이터가 주어져야 한다. 그 주어진 학습 데이터로 학습을 한 그 모델로 새로운 데이터가 들어왔을 때 근사한 해를 예측할 수 있도록 한다. 경사하강법의 과정 그렇다면 이제 경사하강법은 어떻게 적용되는 것인지 알아보자. 일단 우리가 원하는 것은 훈련데이터와 우리가 그린 직선이 가깝게 붙어있는 것이다. 위의 그림을 보면 직선과 훈련데이터들의 값이 많이 떨어져있는 것으로 보인다. 그 떨어져있..
설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 제한 사항 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정..
determinant가 0이라는 것의 의미는? 개요 determinant가 0이라는 것은 무엇을 의미하는 걸까? 물론 역행렬이 없다는 걸 의미한다. 하지만, 이걸 기하학적으로 이해한다면, determinant가 0인 벡터는 어떤 모습일까? 기하학적으로 determinant는 어떤 수치일까? determinant란? 일단 matrix는 linear transformation으로 바라볼 수 있다. 그래서 Ax=b로 A라는 선형 변환이 벡터 x에 변환을 일으켜 벡터 b가 된다는 걸 배웠다. 선형 변환의 과정에서는 분명 벡터에 어떤 "변화"가 일어난다. determinant는 그 변환의 정도를 나타낸다. 변환의 정도를 나타내는 대상은 2가지가 있다. 1. 부피 2. 방향 즉, 선형 변환 A가 벡터 x에 부피와 방향의 측면에서 변환을 일으킨 결과가 바로 벡터..
SVD의 이해 개요 SVD라는 건 무엇인지 알아보자. SVD란? 지금까지 행렬을 분해하는 방법으로서 한 가지를 배웠는데, 그것은 바로 eigendecomposition이다. eigendecomposition의 수식은 A = VΛV^-1로 나타낼 수 있었다. 그리고 수식에 대한 이해를 해보자면 선형 변환 A를 3개의 layer로 쪼개는데 V는 벡터를 회전시키고, Λ는 벡터를 scaling하는 역할을 맡는다. (V^-1도 마찬가지로 회전이지만 반대 방향으로 회전하는 것이다.) 이런 행렬 분해법인 EVD는 사용하기 위해서 약간의 제약 조건들이 있었다. A가 Diagonalizable 해야 eigendecomposition을 가질 수 있다. A는 무조건 square matrix여야 한다. V는 무조건 invertible 해야..
2 by 2에서 역행렬을 구해보자. 개요 코드가 아닌 손으로 역행렬 계산을 했을 때, 어떤 과정을 통해 역행렬을 얻는 것인지 알아보자. 행렬의 shape은 2 by 2로 가정한다. 필요한 수식 우리는 determinant를 구할 때 ad - bc = 0인지 아닌지를 살펴본다. det이 0이면 역행렬이 없는 것이고, det이 0이 아니면 역행렬이 있는 것이다. 저 determinant를 구하는 식의 고향이 바로 역행렬을 구하는 수식이다. 아래와 같이 생겼다. 그냥 이 식에 그대로 값만 대입하면 된다! 값을 대입하여 역행렬을 구해보자. 우리가 가지고 있는 A는 [2,1],[1,2]라고 가정한다. 이렇게 간단하게 구할 수 있다. 이제 이를 이용해서 방정식을 한번 풀어보자. Ax=b 꼴에서 x는 주어져있지 않고 b만 [-2,1]로 주어졌다고 가정..
Change of basis의 이해 개요 개인적으로 정말로 정말로 정말로 이해하기 힘들었던 linear transformation에 의한 change of basis를 알아보기로 하자. 일단 선형 변환 A가 벡터 x를 통과해서 벡터 b가 된다는(Ax=b) 이 말을 제대로 이해를 할 필요가 있다. 나는 이게 무슨 말인지 알고 있는 줄 알고 넘어갔는데, 알고 보니 그냥 의미를 아예 모르는 거였다. 그래서 change of basis를 이해하는 데 엄청 애를 먹었던 것 같다. 물론, 100%로 change of basis, linear transformation을 이해했다고는 못하겠다. 그냥 이제야 좀 무슨 말인지 알겠다는 말이다. 밑바탕이 될만한 지식 그럼 Ax=b라는 게 도대체 뭘까? 선형대수학을 시작할 때 알려준 내용인 것 같은데 지금까지..