전체 글

전체 글

    Identifying and attacking the saddle point problem in high-dimensional non-convex optimization 리뷰

    Identifying and attacking the saddle point problem in high-dimensional non-convex optimization 리뷰

    링크: https://arxiv.org/pdf/1406.2572.pdf Intro 저차원에서의 기하학에 대한 경험을 고차원으로 적용할수 없다. 왜나하면 error function들은 차원이 커질수록 안장점의 개수는 지수적으로 증가하기 때문이다. 그리고 통계학, 랜덤 행렬이론, 신경망 이론, 선험적인 증거들로 비볼록함수를 최소화 하는것은 local minima의 문제가 아닌 안장점에서 비롯됨을 보인다. 특히, 고차원에서 안장점은 high error plateaus로 둘러 쌓여있어 학습을 극도로 낮추고 local minimum이 있다는 착각을 하게한다. 그래서 저자들은 기존의 SGD, quasi-Newton과는 다른 2차원 최적화 방법인 saddle-free newton method로 고차원에서 안장점을 탈..

    손실함수의 그래프(Training Curve, Loss Landscape)와 최적화 방법

    손실함수의 그래프(Training Curve, Loss Landscape)와 최적화 방법

    책을 읽으며 손실함수와 최적화함수에 대해 공부하던 중 손실함수의 그래프에 대해 의문을 갖게 되었다. 왜냐하면 최적화함수마다 최솟값을 찾아가는 경로, 움직임이 전부 다르기 때문이다. 또한 손실함수의 global minimum을 찾을 때 안장점(saddle point), Local minima 등의 문제가 있어 초기값과 탐색경로가 중요한 것을 알 수 있었다. 따라서 손실함수의 그래프를 알 수 있다면, global minimum을 효율적으로 찾아가기 위해 어떤 초기값이 좋을지, 어떤 최적화함수가 좋을지에 대한 insight를 얻거나 inference가 가능할 수도 있겠다 싶어 손실함수의 그래프에 대해 찾아보게 되었다. 일반적으로 우리가 보는 손실함수의 그래프는 Traing Curve이고 다음과 같다. 이는 에..

    Visualizing the Loss Landscape of Neural Nets 리뷰

    Visualizing the Loss Landscape of Neural Nets 리뷰

    논문: https://arxiv.org/pdf/1712.09913v3.pdf Intro 손실함수를 시각화하는 방법에 대해 궁금해하던 중 발견한 논문이다. 왜냐하면 손실함수를 시각화하여 봄으로써 최적화함수의 선택에 도움이 될 것이라고 생각했기 때문이다. 이 논문에서는 단순 손실함수 시각화뿐 아니라 모델의 구조, 최적화 함수, Weight Decay와 skip-connection 그리고 배치 사이즈에 따른 손실함수의 변화를 시각화하여 보여줌으로써 모델에 주는 영향을 직관적으로 알 수 있게 한다. The Basics of Loss Function Visualization 이 논문에선 손실함수를 표현하는 방법으로 '1-Dimensional Linear Interpolation'와 'Filter-Wise Norm..

    밑바닥 부터 시작하는 딥러닝②  요약

    밑바닥 부터 시작하는 딥러닝② 요약

    밑바닥부터 시작하는 딥러닝 2권을 읽고 필기한 내용들이다. 딥러닝의 기본적인 모델인 RNN과 언어처리에 대하여 배우는 책이였다. RNN의 기본원리와 CNN과의 차이점, 시계열 데이터인 텍스트 데이터들을 다루는 법을 배웠다. 그리고 RNN을 개선한 다양한 기법들과 공통적으로 일반화 및 성능개선에 도움되는 기법들에 대해 공부하였다. 문장을 벡터로 나타내는 방법 두 가지를 배웠다. 딥러닝으로 사용할 수 있는건 추론기반기법인데 word2vec로 문장을 벡터로 만들어 신경만의 입력으로 사용할 수 있게 한다. 벡터로 바꾸면 동시발생 행렬이라고 주목하는 값만 1이고 나머지는 값이 0인 행렬(one-hot-vector)로 변환한다. 이때 문장의 길이가 길어지면 벡터의 차원이 너무 커지기 때문에 특잇값 분해를 통하여 벡..

    밑바닥부터 시작하는 딥러닝①: 손실함수와 정확도 미분

    밑바닥부터 시작하는 딥러닝①: 손실함수와 정확도 미분

    모델의 평가방법으로 정확도가 아닌 손실함수를 사용 하는 이유에 대해 내가 이해한 대로 써보려 한다. 정확도가 아닌 손실함수를 평가요소로 사용하는 이유는 두가지가 있다. ① 정확도는 매개변수의 변화에 민감하게 반응하지 않고, 값이 불연속적이다. ② 정확도는 매개변수의 미분값이 대부분 0이여서 매개변수 갱신이 되지 않는다. 정확히는 ①이 ②의 원인이다. 먼저 정확도 그래프를 보자. 값이 불연속적으로 변하는 것을 볼 수 있다. 왜냐하면 정답 갯수는 값이 1개, 2개..등으로 셀 수 있는 정수, 즉 불연속적인 값이기 때문이다. 이 정확도 함수는 미분을 하여도 구간별로 상수이기때문에 미분값이 0이 될것이고, 따라서 역전파를 통한 최적화시에 매개변수 값을 바꿀 수 없다. 왜냐하면 0은 더하거나 곱해도 0이기 때문이..

    밑바닥 부터 시작하는 딥러닝① 요약

    밑바닥 부터 시작하는 딥러닝① 요약

    딥러닝을 공부한지 두달정도가 지났고 딥러닝계의 바이블로 불리는 '밑바닥부터 시작하는 딥러닝①'로 시작하였다. 신경망(ANN)의 기초와 평가방법, 최적화 그리고 합성곱계층(CNN), 오버피팅 방지 등에 대해 배우는 책이였다. 책을 공부하며 정리한 요약본을 남겨본다. 책을 읽으며 생긴 의문점과 그에 대한 답은 후속 포스트에 남겨놓았다. 신경망에 대해 처음 배우는 장이다. ANN, 완전연결계층과 입력(label)을 이용해 머신러닝의 기초에 대하여 배웠다. ANN은 입력층, 은닉층, 출력층으로 나눌 수 있었고 층의 깊이를 깊게 할때는 은닉층을 깊게 쌓았다. 입력층에 데이터를 바로 입력하지 않고 데이터의 특성들을 고려하여 전처리 후, 입력하면 정확도를 더 높힐수 있었다. 모델을 평가할 때는 정확도와 손실함수라는 ..

    백준 17135번: 캐슬 디펜스 (파이썬, 완전탐색, 구현)

    백준 17135번: 캐슬 디펜스 (파이썬, 완전탐색, 구현)

    정말 어려운 문제였다. 처음 문제를 봤을때 완전탐색 혹은 DP중에 고민했는데 시간복잡도가 M개 중에 3 개를 뽑는 조합 mC3 = m(m-1)(m-2)/6, 적들이 N번 움직이므로 반복문 O(N), 사정거리 D만큼, M열에 대해 거리를 탐색해야 하니 O(N^2)으로 M= 15, N = 15일 때 455*15*15*10= 10^6으로 시간제한인 1초에 넉넉하게 맞출 수 있어 완전탐색으로 풀어야 겠다고 생각할 수 있었다. 그러나 구현 문제를 거의 처음 풀어봐서 시간이 오래 걸렸는데 반복문이 많이 중첩되다 보니 순서나 반복값에 있어서 헷갈림이 많았다. 알고리즘은 간단하다. 먼저 조합으로 [0:M]에 대해 3개를 뽑는다. 이때 궁수의 위치는 N행에 고정이므로 열의 크기에 대해서 조합을 뽑아야 한다. 그다음 적과..

    백준 17070번: 파이프 옮기기 1 (파이썬, DFS, DP)

    백준 17070번: 파이프 옮기기 1 (파이썬, DFS, DP)

    멘탈이 나간 문제이다. 골드V에서 이정도로 헤멘건 처음이다.. 삼성 A형 기출문제중 하나인데 2차원 배열이 주어지길래 당연히 dfs, bfs로 접근하려 했다. 나는 bfs로 접근하였는데 파이프가 가로인지, 세로인지, 대각선인지 판단을 해야해서 queue에 두 점의 좌표를 튜플과 리스트로 감싸 넣었다. 대각선일땐 세점이 방문 불가하고 파이프의 왼쪽은 파이프가 옮겨질 때 옮겨지기 전 파이프 오른쪽의 좌표로 옮겨진다는 두 포인트를 잡고 코드를 짰다. import sys from collections import deque def bfs(n): global cnt queue = deque(n) while queue: now = queue.popleft() if now[0][0] - now[1][0] == 0: ..