전체 글

전체 글

    다양한 Gradient descent optimization

    0. 더 나은 optimization 지금까지 사용했던 Gradient descent는 Stochastic Gradient Descent(SGD)였다. 하지만 실제로는 다양한 Gradient descent방식이 있으며 각 어떤 특징을 갖는지 확인해보자. 1. SGD의 문제점 우선 SGD의 문제가 무엇일까? 다음과 같은 상황을 가정해보자. 하나의 weight에 대한 Loss의 Gradient가 크고, 또 다른 하나의 weight에 대한 Loss의 Gradient가 작다면 즉, Hessian matrix에서 가장 큰 값과 가장 작은 값의 비율이 클 때, 다음과 같이 optimize한다. 이렇게 되면 Gradient가 작은 방향에 대해서는 optimize속도가 느리고, 큰 방향에 대해서는 변화가 요동친다. 이..

    인공 신경망 학습

    1. 활성화 함수 1. 인공 신경망의 간략도 2. 활성화 함수란? 네트워크로 분류할 때, 분류기가 비선형 분류기로써 역할을 하기 위한 비선형 함수이다. 위 그림에서 활성화 함수 부분이 빠진다면 각 노드는 *와 + 등 선형 연산만 하게 되므로 이런 네트워크는 비선형 데이터를 분류하지 못하게 될 것이다. 3. 활성화 함수의 종류 1. Sigmoid 가장 초기의 활성화 함수로 뉴런에 대한 직관적인 해석으로 탄생한 활성화 함수이다. 하지만 현재에는 잘 사용하지 않는데 다음과 같은 3가지의 이유가 있기 때문이다. 첫째로는 레이어를 거듭할 수록 기울기가 0에 가까워 지기 때문이다. 그 이유는 Sigmoid의 정의 때문인데, 0에서 - 혹은 +로 발산할 수록 gradient는 0에 가까워지고, 이것이 레이어가 깊어질..

    합성곱 신경망

    1. Fully connected layer vs Convolutional layer 1-1.Fully connected layer? 3차원 이미지를 1차원으로 펼쳐서 하나의 가중치 row에 대해서 모든 픽셀의 값을 내적(dot)한 값들의 집합으로 이미지 전체에 대해 학습한다. 1-2. Convolutional layer 하나의 output이 이미지 전체가 아닌 일정 구역에 대한 내적값이기 때문에, fully connected layer와 다르게 이미지의 공간적 구조 및 정보를 유지하며 전파한다. (local connectivity) 3차원 필터가 3차원 이미지를 순회하면서(slide) 내적한다. 이때 필터의 깊이(depth)는 반드시 input의 depth와 같아야 한다. 이렇게 필터가 순회하면서 내적..

    역전파와 신경 네트워크

    0. Gradient descent 이전에 Gradient descent가 어떤 의미를 갖는지 알아봤었다. 리마인드 해보자면, 다음과 같은 scores funcion이 있을 때 각 데이터 별로 실제 scores와 예측 scores를 이용하여 Loss(손실)를 계산하고, 모든 데이터에 대해 더했다. 이와 같이 하나의 스칼라로 나타나진 Loss라는 기준을 바탕으로, 이 값을 최소화 하는 방향으로 W를 업데이트 하기 위해서 우리는 Loss를 W에 대해서 미분한 값을 구하는 것이다. 이렇게 미분값을 구하고, W를 갱신하는 것을 iterative하게 함으로써 우리는 최적의 값으로 도달할 수 있다. Gradient descent에서 가장 중요한 것은 어떻게 L을 w에 대해 미분한 값을 얻느냐 인데, 이 방식에는 직..

    ML-Agent 학습 환경 디자인

    https://github.com/Unity-Technologies/ml-agents/blob/release_12_docs/docs/Learning-Environment-Design-Agents.md#multiple-visual-observations Unity-Technologies/ml-agents Unity Machine Learning Agents Toolkit. Contribute to Unity-Technologies/ml-agents development by creating an account on GitHub. github.com 이 사이트를 바탕으로 ml-agents 환경 정의 (특히 visual observation에 관하여) 부분을 서술해보고자 한다. Overriding the Ag..

    백준 14003 번 : 가장 긴 증가하는 부분 수열 5

    문제 문제 분석 증가 수열 문제 시리즈를 몇개 풀어봐서 얕봤었다.... 어려웠다. 다른 점이라곤 범위가 0에서 -10만정도로 바뀐 것이고 경로를 추가로 출력해야 했었다. 가장 먼저 생각난 것은 갯수를 구할때 쓰인 DP를 그대로 이용하는 것이었다. DP[i]는 길이가 i인 증가하는 수열에서 가장 작은 끝값을 저장하는 것이었는데 이 모양이 부분 증가수열이라서 그대로 이것을 출력했는데 틀렸었다. 당연한게 이것은 가장 긴 증가하는 부분 수열을 위해서 계속 갱신되기 때문이다. 예를 들어 456712이런 수열이 존재한다면 DP에는 4567이 아닌 1267이 존재할 것이고 이는 입력의 증가하는 부분 수열이 아니므로 틀리게 되는 것이다. 그래서 이 경로를 저장할 두번째 방식으로 생각해낸 것이 각 인덱스 별로 (부분수열..