Machine Learning
Pytorch Lightning
Pytorch Lightning
2022.03.26Pytorch Lightning은 Pytorch보다 더 높은 수준의 추상화를 지원해 구조화된 코드를 작성할 수 있도록 한다. PL의 코드 스타일에 대해 살펴보자. 먼저 클래스(모델)를 선언한 다음, init함수에서 신경망 모델의 layer, 활성함수 등을 선언하고 forward에서는 이미 만든 layer를 활용해 모델을 구축한다. 그 다음 데이터를 준비한다. prepare_data함수에서 데이터를 입력받은 다음 텐서로 변환하고, 변환된 텐서에 대해 학습 / 검증 / 시험 단계를 거친다. 다음으로는 옵티마이저를 준비한 다음, 오차함수를 준비한다. 입력한 데이터를 최적화하는 과정이다. 즉, 학습 검증 평가 모드를 함수단위로 분할해서 진행한다. 각각의 단계를 자세히 살펴보자. epoch_end부분의 리턴타입은..
Pytorch / Tensorflow - 차원
Pytorch / Tensorflow - 차원
2022.03.18설치 파이토치와 텐서플로우를 설치할 때, 각자 다른 가상환경에 따로 설치하는 편이 좋다. 같은 가상환경에 설치해도 둘은 다른 라이브러리이기에 충돌이 발생하지는 않지만, 하나의 가상환경에 여러 개의 프로젝트를 작업할 경우 무슨 프로젝트에 무슨 라이브러리가 필요한지 알기 어렵게 될 수 있다. 즉, 파이토치를 사용하는 프로젝트는 파이토치 가상환경에서, 텐서플로우를 사용하는 프로젝트는 텐서플로우 가상환경에서.. 이런 방식으로 사용하는게 합리적이다. 차원 2차원 텐서의 경우 행과 열로 표현될 수 있어 행렬로 이해할 수 있다. 이미지 데이터는 (가로, 세로, 색상)으로 총 3차원으로 표현되는데, 여기서 이미지 데이터 batch를 활용하게 되면 (이미지 데이터, 가로, 세로, 색상)으로 4차원의 형태가 된다. 차원이..
Pytorch - Tensor
Pytorch - Tensor
2022.03.16정의 다차원 배열을 의미하며, Numpy에서의 Array와 유사하다. 연산 속도를 극대화하기 위해 GPU연산을 지원한다. 이 때 그래픽카드가 없으면 CPU모드로 설치할 수 있는데, 이런 경우 GPU연산은 지원되지 않지만, 더 많은 딥러닝 연산 함수가 지원되는 tensor객체를 사용하기 위해 파이토치를 사용하기도 한다. x = torch.zeros(5, 3) print(x) print(x.shape) """ tensor([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]) 행렬의 원소를 0으로 하고 출력한다 torch.Size([5, 3]) 5행 3열 크기의 행렬 """ 2차원 텐서 뿐만 아니라 3차원 N차원까지 존재하며, torc..
정리
정리
2021.12.131. (Traditional) ML 과 DL의 차이점 딥러닝에서는 backpropagation으로 Cost를 최소화한다. (층을 겹쳐서 쌓으니 scale이 커짐) DL 에서는 Feature 추출도 기계가 함. (인간의 개입을 최소화) 위의 이유 때문에 DL의 모델이 ML보다 복잡해지고 결정할 parameter수도 많아짐. 학습 데이터가 많이 필요함. 2. backpropagation, chain rule 여러 층으로 구성된 Neural Network. 즉 Deep Neural Network 에서 가중치를 갱신할 때 사용. forward(Loss 값 계산) -> backward(편미분 chain rule) -> gradient descent(가중치 업데이트) MLP에서 XOR을 처리하기 위해 backpro..
Machine Learning - RNN
Machine Learning - RNN
2021.12.05RNN (Recurrent Neural Networks) 지금까지 배웠던 것들을 생각해보자. 처음에 DNN (Deep Neural Networks)에 대해 배웠고, 다음으로 영상과 이미지 처리에 효과적인 CNN (Convolution Neural Networks)을 배웠으며 이제는 series에 대한 정보를 다룰 때 유용한 RNN에 대해 배울 차례이다. DNN Parameter가 급격하게 많아지는 단점이 있다. CNN Parameter를 줄일 수 있다. backpropagation을 수행하는 점은 DNN과 동일함. RNN RNN은 순차적인 데이터의 처리에 적합하다. ex. 시간에 따라 순차적인 입력이 들어오는 음성, 음악 상태 정보 등.. RNN을 음성인식에 사용하는 예시를 생각해보자. 우리는 음성을 직..
Deep Learning - CNN
Deep Learning - CNN
2021.12.05딥러닝의 활용 분야인 CNN (Convolutional Neural Network) 에 대해 알아보자. 영상을 볼 때 우리는 영상을 보지만, 컴퓨터는 숫자를 본다. 이미지는 행렬 기반으로 표현된다. 예시로 위와 같이 6x6 size의 행렬이 있을 때 3x3행렬을 * 연산 해 줄 수 있는데 이 연산을 Convolution이라고 한다. (선형대수의 곱셈과 convolution은 다름) 큰 수일수록 밝고 작은 수일수록 어둡다고 하자. convolution 연산 과정을 살펴보자. 3x3행렬로 나눈 다음 각 요소에 따라 연산을 진행한다. 완료된 연산은 오른쪽의 결과 행렬에 적는다. 위 방법을 반복해서 4x4 행렬을 완성한다. 예시의 연산을 마치면 위와 같이 나온다. 여기서 3x3행렬은 Filter라고 하는데 딥러..
Advice for Applying ML/DL (2)
Advice for Applying ML/DL (2)
2021.12.04Training 보다 Testing의 결과가 좋지 않을 때, 이 문제를 Bias와 Variance의 문제로 나눌 수 있다. 위의 문제를 Regularization을 통해 해결했었고, 이 문제가 Bias때문에 발생했는지 Variance 때문에 발생했는지 확인할 때 Learning Curve를 사용한다. 이번 시간에는 Bias 와 Variance에 대해 알아보고 위의 과정에 대해 알아보자. 사진에서는 d=2일 경우에 적당하게 튜닝됐다고 할 수 있고 나머지의 경우는 Underfit 혹은 Overfit 상태이다. 여기서 underfit의 경우 High bias가 끼어있다고 표현한다. 이 경우 데이터를 아무리 많이 박아도 문제는 해결되지 않는다. 다음으로 overfit의 경우에는 High variance의 문제를..
Advice for Applying ML/DL (1)
Advice for Applying ML/DL (1)
2021.12.04Training에서는 잘 되지만, Testing에서는 잘 작동하지 않는 경우가 많이 있다. 이런 경우에 Traditional Machine Learning과 Deep Learning 모두에 적용될 수 있는 몇 가지 해결방법이 있다. 이번 시간에는 그 해결방법에 대해 알아보자. 1. Evaluating a hypothesis 2. Model selection and training/validation/test sets 머신러닝에 대해 배울 때, 특정 모듈에 대해서 공부했었다. Evaluating a hypothesis는 여기서 어떤 모듈을 사용할지.. 라고 이해하자. 딥러닝 관점에서 생각해 볼 때는, Layer를 1단으로 설정할 지, 10단으로 설정할 지.. 몇 단으로 설정할지와 특정한 Activation..
Deep Learning (4)
Deep Learning (4)
2021.12.03Multi Layer Perceptron의 개념을 바탕으로 자연어처리(NLP)와 같은 딥러닝의 응용 부분으로 확장할 때 먼저 학습해야하는 개념이 있다. 이번 시간에는 그 개념들에 대해 알아보자. 1. Normalizing inputs 2. Batch/Mini-batch 1. input을 정규화 한다.. 라는 의미를 가진다. Backpropagation으로 정규화를 진행할 때, 입력값으로 주어지는 x1과 x2의 값의 차이가 크면, (ex. x1은 1,000,000 / x2는 50) 학습을 진행할 때 큰 문제가 발생하게 된다. 따라서 두 입력값의 scale을 맞춰 주는 것이 필요한데, 여기서 두 입력값에 대해서 normalization을 진행하는 방법은 학습에 큰 도움이 되지 않는다. 그러면 어떤 방법으로 ..
Deep Learning (3)
Deep Learning (3)
2021.11.18지난 시간에 배운 내용을 잠깐 짚고 가자. Linear System으로는 복잡한 모델을 처리할 수 없어 활성함수를 통해 NonLinear을 도입해서 사용한다. 가중치 W는 Backpropagation을 통해 Gradient Descent를 통해 갱신한다. 이제 활성함수에 어떤 것들이 들어갈 수 있는지에 대해 알아보자. 활성 함수들의 조건으로는 증가함수여야하고, backpropagation이 원활하게 진행될 수 있도록 Gradient 값 (미분값) 이 깔끔하게 나와야 한다. (미분값에 집중하기보다는 미분을 하는 이유에 집중해서 공부해보자.) 우리에게 익숙한 함수인 Sigmoid function이 주로 쓰이다가, 다양한 함수들을 적용해보며 특정 함수가 영상 인식, 자연어처리 등 특정 분야에 훌륭한 결과를 보..
Deep Learning - Backpropagation
Deep Learning - Backpropagation
2021.11.14단일 층으로 구성돼있는 Neural Network에는 Gradient Descent를 사용하는게 합리적이다. Backpropagation은 여러 층으로 구성된 상황에서 오류가 최소가 되는 가중치 w를 결정하는 방법이다. 기본적인 틀은 Gradient Descent를 따른다. 먼저 Computation Graphs와 Loss function을 정의한다. Loss 함수는 평가지표를 위해 정의한다. (Cost 함수로도 불림) 입력값과 weight(가중치)를 통해 출력값을 도출한다. (FORWARD DIRECTION) 이 때 처음 가중치는 무작위로 정한다. (Gradient Descent와 비슷함) 다음으로 출력값과 정답값을 통해 Loss를 계산하고. Loss를 통해 가중치를 업데이트한다. (BACKWARD D..
Deep Learning (2)
Deep Learning (2)
2021.11.14Neuron 은 신경계를 구성하는 세포이다. 지난 시간에 Deep Neural Network를 배웠는데, 여기서 Neural 단어는 딥러닝이 인간의 두뇌와 유사한 과정으로 동작하기 때문이다. 사진이 뇌 속의 뉴런인데, 뉴런 그 자체는 간단하다. 전기적 자극을 받아들이고 활성화할지, 비활성화할지 결정하는 간단한 동작을 수행한다. 하지만 뉴런들이 붙고, 그루핑하고, Network를 형성하게 되면 훨씬 복잡한 생각을 할 수 있게 된다. 뉴런의 기본적인 동작 방식이다. 한 뉴런의 출력을 다른 뉴런이 입력으로 받아들이고, 위의 과정을 반복한다. 뉴런들의 동작 방식을 연구한 결과 인공신경망(Perceptron)이 발명됐다. 입력값들을 받아들이고, (x0 ~ xn) 각각의 입력에 weight를 붙여준다 (w0~wn)..