딥러닝 공부를 하면서 정말 헷갈렸던 것들을 다시 공부해서 정리해보겠다. 잘못된 정보가 있으면 댓글로 지적 부탁드립니다 ^_^ 딥러닝 모델에서 feature, 가중치 노드 수가 의미하는 것? MLP에서 한 레이어에서 다음 레이어로 넘어갈 때 각 노드는 이전 노드의 XW + B(W : 가중치, B : 편향)의 값을 전달받다. 이때 X 는 사용할 데이터의 feature 값이되고 W와 B는 모델이 스스로 학습할 가중치/편향이 된다. 또한 특정 에폭에서 모델을 저장하는 것은 그때 만들어진 가중치와 편향을 저장하는 것이다. 따라서 각 레이어에 들어있는 노드 수는 feature의 개수와 같으며 신경망의 학습은 데이터를 잘 이해/분류할 수 있도록 feature을 추출해내는 weight를 학습시키는 것이라 할 수 있다...
+) CNN에 대한 추가 설명은 이 포스팅을 참고. CNN의 연산과정에 대한 구체적인 설명이 담겨있음 - 이미지를 분류하는 모델을 만들고자 할 때 CNN과 MLP의 큰 차이점은 Feature를 어떻게 추출하느냐에 있다. MLP는 이미지의 픽셀값을 바로 네트워크의 Input으로 사용하는 것이고 CNN은 Convolution Layer와 Pooling Layer를 이용하여 이미지의 Region Feature를 추출하고 그 feature를 MLP의 인풋으로 사용한다. - 그러니까 컴퓨터비전에서 CNN의 성능이 좋은 이유는 단지 Region Feature를 추출할 수 있기 때문인 것이다. - CNN은 MLP와 같이 계층을 조합하여 만들 수 있다. 다만, 합성곱 계층(convolutional layer)과 풀링 ..
AutoEncoder 오토인코더는 비지도학습 인공지능이다. 즉, 입력 데이터를 가공하여 목표값을 출력하는 방식이 아니라, 레이블 정보가 없는 데이터 특성을 분석하거나 추출하는 방식이다. AE는 입력과 출력이 동일하며 좌우를 대칭으로 구축된 구조를 지닌다. 비지도 학습 문제를 지도 학습 문제로 바꾸어서 해결한 방법이라 불리기도 한다. 중간에 위치한 Hidden Layer의 앞부분을 '인코더', 뒷부분을 '디코더'라 한다. 오토인코더는 Input data에 대해 Hidden layer로 인코딩(압축)한 후 다시 원래 Input Data로 디코딩(복원)하는 개념이라 볼 수 있다. AE를 활용하면 Input Data를 Latent Space에 압축시켜 이 값을 새로운 Feature로 사용할 수 있다. 이 새로운..
Initialization(초기화) 신경망은 처음에 Weight를 랜덤하게 초기화하고 Loss가 최소화되는 부분을 찾아간다. 이때 Weight를 랜덤하게 초기화하면 신경망의 초기 Loss값도 랜덤하게 달라지게 되는데, 최적의 Loss를 찾기 위해서는 Weight를 어떻게 초기화하는 지가 중요하다. 초기화 기법으로는 LeCun Normal Initialization, LeCun Uniform Initialization, Xavier Initialization, He Initialization 등이 있다. 이에 대해서는 책에 자세하게 안나와있다... 그래서 갖고있는 다른 교재를 참고하여 초기화 기법에 대해서 짧게 정리해보자면 - Xavier Initialization : 표준편차가 1/루트n(n = 앞 층의..
Dropout 정의 : 신경망의 학습 과정 중 Layer의 노드를 랜던함게 Drop함으로써 Generallization 효과를 가져오게 하는 테크닉. 과적합을 어느 정도 방지할 수 있음.적용 : Weight Matrix에 랜덤하게 일부 Column에 0을 집어넣어 연산. 적용시 얼마나 랜덤하게 Dropout할 것인지에 대한 확률값을 지정해야 하며 이는 Input Layer와 Hidden Layer에도 적용할 수 있음. 또한 Epoch마다 랜덤하게 Dropout함. MNIST MLP모델 설계시 Dropout 적용하기 지난번 MNIST 데이터 셋을 활용한 MLP모델 설계 예제(여기 참고)를 아주 조금 수정하여 파이토치를 활용한 Dropout 실습을 진행해보겠다. 수정할 부분은 5. MLP 모델 설계하기 단계..
위 포스트는 정보문화사에서 출판한 책 '파이썬 딥러닝 파이토치'를 바탕으로 작성되었습니다. MLP MLP는 여러 개의 퍼셉트론 조합과 이것들의 재조합으로 복잡한 비선형적인 모형을 만들어내는 것을 말한다. MLP의 Hidden Layer를 쌓으면 Layer가 깊어지기 때문에 MLP는 딥러닝의 기본적인 모델이 된다. 이 신경망은 Input에서 Weight와 Hidden을 거쳐 Output을 내보내는데, 이 과정을 'Feed Forward'라 한다. Back Porapagation Feed Forward를 이용해 계산하는 output은 우리가 얻고자 하는 예측 값이다. 이 예측값과 실제값의 차이(ERROR)를 계산하고, 이를 바탕으로 신경망의 Weight를 업데이트한다. 이 과정이 바로 'Back Propag..
위 포스트는 정보문화사에서 출판한 책 '파이썬 딥러닝 파이토치'를 바탕으로 작성되었습니다. 우리는 전체 데이터가 아니라 샘플 데이터(표본)만 갖고 있다. 우리가 갖고 있는 샘플 데이터를 완벽하게 맞추는 모델을 만들었을 때, 우리가 보지 못한 데이터도 모두 잘 맞을거라 보장할 수 있을까? 우리가 갖고 있는 데이터를 더욱 완벽하게 맞추려고 노력할수록 우리가 보지 못한 데이터는 더 맞추지 못할 확률이 높다(과적합). 여기서 과적합이 발생하는 이유는 무엇일까? 1. 샘플 데이터 수의 부족 만약 전체 집단의 데이터를 갖고 있고 이 데이터에 잘 맞는 모델을 만들었다면 전혀 문제가 없다. 즉, 학습할 데이터의 수가 많을수록 모집단의 특성을 잘 반영할 확률이 높으며 우리가 갖고 있는 데이터가 모집단의 특성을 잘 반영할..
위 포스트는 정보문화사에서 출판한 책 의 내용을 바탕으로 작성되었습니다. 머신러닝이란? 머신러닝의 정의는 인공지능과 똑같지만, 사용하는 분야가 조금 다르다고 보면 된다. 최근의 머신러닝은 행과 열이 존재하는 행렬(정형 데이터)을 이용해 뭔가 예측 또는 분류하고 싶을 때 사용하고, 이미지 또는 텍스트와 같이 정형화돼 있지 않은(비정형 데이터) 데이터를 사용할 때는 인공지능(딥러닝)을 사용한다. (크게 보면 머신러닝은 인공지능 안에 포함되는 개념이라 볼 수 있다) 머신러닝의 종류 머신러닝 모델의 학습 목표는 '데이터(Input)에 대한 모델의 결과(Output)가 정답(Label)에 가깝게 나오도록 학습시키는 것'이다. 그렇다면 어떤 방법으로 모델을 학습시키는 것일까? 전반적인 머신러닝 모델 학습 방식은 다..
위 포스트는 정보문화사에서 출판한 책 의 내용을 바탕으로 작성되었습니다. 인공지능의 사례에는 어떤 것이 있을까? 1. 이미지 분류 인간이 이미지를 분류하는 성능은 약 95% 정도로 알려져 있다. 이런 인간의 능력을 따라잡기 위해 많은 연구자들은 어떻게 하면 인간 또는 그 이상으로 딥러닝이 이미지를 분류하는 성능을 낼 수 있을까 고민했다. 많은 연구 끝에 96%의 성능을 기록한 'ResNet'이라는 모델이 만들어졌다. 그 이후에도 딥러닝 모델은 계속 발전하여 단순히 이미지를 분류하는 것을 넘어 다양한 분야와 방식으로 발전하고 있다. 2. 객체 탐지(Object Dectection) 객체 탐지는 어떤 이미지 및 비디오 속에 포함되어 있는 물체에 대해 해당 물체가 어떤 물체인지를 분류하는 문제와 물체의 위치를..
위 포스트는 정보문화사에서 출판한 책 의 내용을 바탕으로 작성되었습니다. Autograd Autograd는 신경망 학습을 지원하는 PyTorch의 자동 미분 엔진이다. 파이토치를 활용 시 Back Propagation을 이용하여 파라미터를 업데이트하는 과정은 Autograd 방식으로 쉽게 구현할 수 있다. 이를 간단한 딥러닝 모델을 설계해보면서 구체적으로 설명해 보겠다. 우선, 전체 코드는 아래와 같다. 위의 전체 코드를 3개의 과정으로 분할하여 차근차근 살펴보자. (1) cuda.is_available() 메서드 : 현재 파이썬이 실행되고 있는 환경에서 GPU를 계산할 수 있는지를 파악한다. (2) BATCH_SIZE : 딥러닝 모델에서 파라미터를 업데이트할 때 계산되는 데이터의 개수이다. Input으..