본문 바로가기

(●'◡'●) Categories 🐅387

프로그래머스 (카카오프렌즈 컬러링북, 2017 카카오코드 예선) C++ 문제를 보고 인접한 Node를 탐색하는 DFS를 사용해야겠다 라는 생각이 들었다. DS에서 배운 DFS는 Adjacent List를 만들어서 탐색하는 방법이라 온종일 그 생각밖에 안 들어서 Adjacent List만 만들다가 다시 뜯어 고쳤다. 기본적으로 필요한 변수는 2차원 vector와 visited 유무를 판단하는 2차원 배열이면 모든 알고리즘을 충족할 수 있도록 만들 수 있다. MxN Matrix 처럼 주어지고 인접한 영역간의 관계를 물어보는 문제에서는 괜히 2차원 인접 리스트로 만들지 말고 dx, dy에 대한 변수를 할당하여 상, 하, 좌, 우를 탐색할 수 있는 알고리즘으로 작성할 수 있는 생각을 기르는 중.. #include #include using namespace std; int dx[4.. 2021. 12. 29.
Deep Learning(CNN, Convolution Layers, Dilated Layers, Separable Convolution, Max-Pooling Convolution) Convolution Network Deep Learning Layer가 많은 심층 신경망을 사용하고 layer 하나는 Weighted Sum을 활용한다. W는 데이터로부터 학습을 하는 파라미터이고 마지막에는 Loss function을 정의한다. 즉, 모든 Layer의 Weight를 최적화하는 것. 이를 결정하는 과정이 학습하는 과정이 된다. Layer의 각 Operation은 입력 정보를 Weighted Sum으로 merge하는데 어떤 비율로 Merge 하는가가 포인트 Deep Learning Architecture CNN -> 영상처리, 자연어, 음성인식 : 병렬 처리에 의한 속도 향상을 더 잘 이끌어낼 수 있다. : 자연어 : Machine Translation의 효과가 더 있었다. RNN -> T.. 2021. 12. 29.
Deep Learning(Regularization, Transfer learning, Internal Converiate Shift, Batch Normalization, ReLU Activation Fuction, Sparse Coding) Practical Problem and Solution Practical Issues Training Data를 많이 필요로 한다. 이에 대한 해결책은 데이터를 많이 모으는 것이고 최근 머신러닝을 하는 사람들이 데이터를 많이 모아놓았다는 것. Regularization techinque / data augmentation : 적은 데이터로부터 많은 데이터를 합성해내는 것 Unsupervised / semi-supervised / reinforcement learning : 정답이 아닌 피드백만으로 진행된다는 점 Computation 을 많이 필요로 한다. Regularization Boundary가 복잡하면 training data에 대해서는 잘하지만 지금까지 보지 못했던 데이터에 대해서 처리하기 힘들다.. 2021. 12. 29.
Deep Learning(Deep Generate Model, Convolutional Neural Networks, Recurrent Neural Network) Deep Learning Approaches Convolution Layer에서 가장 중요한 것은 Convolution Layer이다. -> Position Invariant 한 Local을 feature 한다. 입력이 들어와서 Output까지 쭈욱 가는 것. RNN(Recurrent Nearal Network) 과거가 현재에 영향을 주는 Time-series data의 부분으로 쓰인다. FeedBack을 해주는 Node가 존재한다. 현재의 Input값과 Context가 합쳐져서 사용이 된다는 것. Deep Generative Model 가장 유명한것은 GAN 네트워크이다. Attention Model 등이 존재한다. Convolutional Neural Network Layor들이 3차원 구조로 구성이.. 2021. 12. 29.
Deep Learning(ImageNet, ProGAN, Vanishing Gradient Problem) Deep Learning ImageNet Dataset 영상인식 성능, Image-net이라는 데이터 Set이 있다. ILSVRC 2012년 딥러닝이 적용되고 Error Rate가 훨씬 줄었다. 사람의 Error rate는 5프로라고 보면 된다. Instance Segmentation Object가 어디있는지 찾아내고 Pixel 단위로 실루엣을 만들어주게 된다. Image Synthesis: ProGAN Neural Net이 만들어낸 사람들 얼굴 Deep Learning Layer가 굉장히 많다. 수십개에서 천 개까지 사용을 한다. 왜 Layer가 많으면 좋은가? 입력 정보를 Merge 하게 되는데 밑에 있는 Layer보다 위의 것이 좀 더 High Level이 된다. Why Deep Learning H.. 2021. 12. 29.
Deep Learning(Gradient and Jacobian, Back Propagation, Training of 1st , 2nd Layer) Gradient and Jacobian Gradient Vector 스칼라 값을 벡터로 미분하면 얻어지는 것. Error function을 벡터로 미분하면 Gradient를 얻는다. 벡터를 벡터로 미분하는 경우 Matrix 형태로 나타나게 되는데 그것을 Jacobian Matrix 라고 한다. output의 개수와 Input의 개수로 의 행열로 이루어진 Matrix가 된다. 벡터끼리의 Chain rule은 Matrix의 형태로 나타난다고 볼 수 있다. 출력값에 대한 Gradient에 Jacobian 행렬을 곱하면 Input값에 대한 Gradient가 나온다. Back-Propagation on NEaral Nets 밑의 layer에서 벡터가 올라오면 Weighted Sum을 해서 Output을 내주게 되.. 2021. 12. 29.
Deep learning (MLP Learning, Loss Function, Back Propagation, Matrix Notation, Chain Rule) Back-propagation MLP Learning Layer 하나를 나타낼 때 x의 super script를 쓰겠다고 가정. X0 는 input vector가 된다. Label에 해당하는 노드는 전부 1 loss function은 Desired ouput과 real output 사이의 차이에 해당한다. 일단 시작점은 랜덤한 node에서 시작해서 조금씩 gradient를 빼줌으로써 학습을 시작한다. Loss Function(Error Criteria) 최종 output Layer에서 desired output 값을 빼고 제곱을 해서 C개에 해당하는 것 만큼 나눠준다. 그러면 Error를 찾을 수 잇고 Mean square를 하게 되는 과정이 된다. 최근에 들어서 Cross entropy function.. 2021. 12. 23.
Deep learning (Activation Function, softmax, Hidden Units, Output Units) Activation Function " Non-linearity Function " 이라고 불린다. Weighted sum을 한 번 더 처리해주는 역할을 한다. Activation Functions Sigmoid 함수 : Hyperbolic Tangent 함수 : -1에서 +1까지의 값을 가진다. ReLU 함수 : net value와 0 사이의 max값을 취하는 것. Softmax function 여러 개의 카테고리를 나타내는 것을 확률적으로 표현하고 싶을 때 사용한다. 확률은 0에서 1 사이의 값을 가져야 한다. 하지만 Net Value는 절대로 확률이 안됀다. 그래서 Exponential을 취해서 전부 양수로 변경을 하고 모든 node에 대한 Exp 값을 더해서 나누게 된다. 그렇다며 전체 값들은 1.. 2021. 12. 23.
Deep learning (Multi-Layer Perceptron) Multi-Layer Limitation of Single-Layer Perception XOR 문제 11 이나 00 이 들어가면 0이 나오고 01 이나 10 이 들어가면 1이 나와야 한다. Neural Network가 이 경계선을 잘 만들 수 있어야 한다. 즉 직선으로 구분될 수 있는 문제여야 한다. output이 0과 1을 내는 class가 2개 존재한다. 하지만 이 문제는 직선 하나를 가지고 Classification 문제를 풀 수 없다. 즉, XOR 문제도 해결을 하지 못함으로 Single Layer의 문제점이 발견되었다. Multi Layer Perceptron 직선 2 개 H1 과 H2가 존재한다고 가정해보자. 각각의 직선은 Perceptron을 통해서 표현할 수 있다. y1과 y2를 각각의 .. 2021. 12. 23.
Deep learning (Gradient Descent, Chain Rule, Learning Rate) Neural Network Classifier Gradient Descent 미분을 통해서 Optimize하게 된다. 하나의 스칼라 값을 W에 대해 미분을 하게 된다. W의 값을 일렬로 세워서 일차원 벡터인 것으로 생각하자. scalar 값을 나열하면 다음과 같은 식을 얻을 수 있다. (가장 오른쪽 식) 이러한 벡터를 Gradient 벡터라고 한다. 각각 Element들이 해당 Weight로 미분이 된것이 Gradient 벡터라고 한다. 수학적으로 Error surface의 error가 급격하게 변화는 방향이라고 볼 수 있다. W에 Gradient를 마이너스 한다는 것은 반대 방향으로 간다는 것을 의미한다. 감소하는 방향으로 이동하게 된다. 현재 Weight에서 Gradient를 빼주는 것이 Gradie.. 2021. 12. 23.