인공지능/케라스 창시자에게 배우는 딥러닝
-
#8. 합성곱 신경망(Convolutional neural network, CNN)인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 22. 00:14
합성곱 신경망(Convolutional Neural Network)은 인공지능의 눈을 담당하는 신경망이라 할 수 있다. 정확히는 컴퓨터 비전을 위한 신경망이 합성곱 신경망이며, 흔히 이야기하는 CNN이다. 이번 포스팅에서는 MNIST 데이터에 Conv2D를 활용하여 CNN에 대한 기본적인 흐름을 파악한다. 먼저 기본 코드를 살펴보자. model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) # 이미지 포맷 model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu'..
-
#7. 과대적합과 과소적합인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 14. 21:47
머신러닝은 결국 최적화(Optimization)와 일반화(Generalization) 사이의 균형을 맞추는 작업이다. 데이터가 무한할 경우 학습을 반복하는 것이 모델에 도움이 될 수 있지만 한정된 데이터 안에서 학습을 계속하는 것은 해당 학습 데이터에만 맞춰진 모델을 구축하는 결과를 낳는다. 이를 방지하기 위해 우리는 데이터를 더 모으거나, 모델이 수용할 수 있는 양을 조정하거나 저장할 수 있는 정보에 제약을 줌으로써 더 나은 일반화가 가능하다. 네트워크 크기 축소 과대적합을 막는 가장 단순한 방법은 네트워크 크기 축소다. 모델에 있는 학습 파라미터를 줄이게 되면 데이터는 압축된 표현을 학습하게 되고 이는 일반화의 성능을 올려준다. 쉽게 생각해 데이터를 뭉뚱그려 표현함으로써 좀 더 많은 데이터가 이에 적..
-
#6. 데이터 전처리인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 14. 21:02
위의 사진은 데이터 사이언티스트가 데이터를 수집하여 모델을 도출해내기까지 어떤 단계에서 얼만큼의 시간이 사용되는지를 보여준다. 이를 보면 절반 이상의 시간이 데이터를 전처리하는데 사용된다. 그만큼 데이터의 전처리는 모델의 성능에 가장 직결되는 문제이고 그만큼 중요하다. 전처리의 목적은 주어진 데이터를 신경망에 적용하기 용이하도록 변환하는 것이다. 신경망의 입력과 타깃은 컴퓨터의 실수 표현 방식인 부동 소수 데이터로 이루어진 데이터여야 한다. 이를 위해 이미지, 텍스트 등의 모든 데이터 형태는 텐서로 변환이 필요하다. 이 단계를 데이터 벡터화(Data Vectorization)라고 한다. 위의 사진처럼 원-핫 인코딩(One-hot Encoding) 역시 데이터 벡터화의 일종이라 할 수 있다. 입력 데이터가..
-
#5. 일반화된 모델을 위한 데이터 분할인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 14. 20:54
머신러닝의 목표는 처음 본 데이터에서 잘 작동하는 일반화된 모델을 얻는 것이다. 데이터의 학습이 부족하면 과소적합(Under-Fitting)이 일어나고 데이터의 학습이 필요 이상이 될 경우 과대적합(Over-Fitting)이 발생한다. 이를 방지하기 위해 우리는 데이터를 훈련 데이터(Training Data), 검증 데이터(Validation Data), 테스트 데이터(Test Data)로 나눠 학습하게 된다. 데이터가 적을 경우 훈련 데이터와 테스트 데이터만을 사용하여 테스트 데이터로 모델을 검증하기도 하나, 일반적으로 이러한 방식은 테스트 데이터에 모델을 과대적합 시킬 위험이 있으므로 사용하지 않는다. 검증 데이터의 형태가 모델로 흘러들어가는 이러한 경우를 우리는 정보 누설(Information Le..
-
#4. 머신러닝의 분류인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 14. 19:29
일반적으로 머신러닝 알고리즘은 4가지의 큰 범주 안에 속한다. 지도학습(Supervisied Learning), 비지도학습(Unsupervisied Learning), 자기지도학습(Self-supervisied Learning), 강화학습(Reinforcement Learning)이다. 각각의 범주는 명확하게 구분되어 있지는 않다. A 문제는 지도학습으로, B 문제는 비지도학습으로 푼다는 개념보다는 이러한 연속적인 범주에 다양한 알고리즘이 속한다는 정도로 인지하면 좋을 것이다. 지도학습(Supervisied Learning)은 사람 혹은 미리 레이블링된 샘플 데이터가 주어지면 입력 데이터를 이러한 레이블에 매핑하는 방법을 학습한다. 일반적으로 분류(Classification)와 회귀(Regression)..
-
#3. 신경망의 구성요소인공지능/케라스 창시자에게 배우는 딥러닝 2021. 2. 7. 18:04
신경망 훈련은 크게 4가지의 요소로 구분된다. 네트워크를 구성하는 층, 학습에 활용될 입력 데이터, 학습의 정확성을 판단하는 손실 함수, 학습 진행 방식을 결정하는 옵티마이저가 모두 서로 연관되어 딥러닝 신경망의 구조를 이룬다. 층(Layer)는 하나 이상의 텐서를 입력 받아 하나 이상의 텐서를 출력하는 데이터 처리 모듈이다. 층은 입력 텐서의 크기와 모양에 따라 적절한 방식을 갖고 데이터를 처리한다. (samples, features)를 가지는 가장 기본적인 2D 텐서가 저장된 벡터 데이터는 보통 완전 연결 층(fully connected layer), 밀집 연결 층(densely connected layer)에 의해 처리가 된다. (samples, timestamps, features)와 같이 흔히 ..
-
#2. 텐서(Tensor) 이해하기인공지능/케라스 창시자에게 배우는 딥러닝 2021. 1. 22. 00:39
텐서(Tensor) : 수학적 데이터를 저장하는 구조 스칼라(scalar)는 하나의 숫자만을 가진 0D의 점과 같은 데이터이다. 벡터(vector)는 1D 텐서를 의미하며 한개의 축을 가진 선의 형태를 띈다. 행렬(matrix)는 행과 열로 이루어진 2D 텐서이며 평면의 형태를 가지는 텐서이다. 그 다음 차원부터는 따로 이름이 존재하지는 않으며 이전 차원을 붙여놓은 형태로 구성된다. 이 텐서는 크게 다음과 같은 속성을 가진다. 축의 개수(rank) : 텐서의 축의 개수를 의미한다. 넘파이 라이브러리에서는 차원(Dimension)의 앞글자를 딴 ndim 속성에 저장된다. 크기(shape) : 각 축에 몇 개의 차원이 있는지를 의미한다. 데이터 타입(DataType) : 텐서에 포함된 데이터의 타입
-
#1. 딥러닝이란 무엇인가?인공지능/케라스 창시자에게 배우는 딥러닝 2021. 1. 21. 00:47
인공지능(Artificial Intelligence)은 보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구활동이라 칭할 수 있다. 초기의 인공지능은 사람이 주는 명시적 규칙을 바탕으로 만들어지는 하나의 프로그램이었다. 이러한 심볼릭AI(Symbolic AI)가 발전하며 흔히 인공지능의 역사에서 배우는 전문가 시스템(Expert System)이 만들어졌다. 이 심볼릭AI는 이미 정의된 문제에 대해서는 높은 정확도를 보이지만 불분명하고 명시되지 않은 규칙을 찾는 것이 어려워 이를 극복하고자 머신러닝이 등장한다. 일반적인 프로그래밍은 규칙과 데이터를 통해 해답을 찾아낸다. 이에 비해 머신러닝(Machine Learning)은 명시된 규칙이 없고 데이터와 해답을 활용한 훈련(Training)을 통해 규..