CS/ML DL 11

딥 러닝: 합성곱 신경망(Convolution Neural Network, CNN)

합성곱(Convolution)은 과거부터 컴퓨터 비전(Computer Vision, CV) 분야에서 많이 쓰이는 이미지 처리 방식으로 계산하는 방식은 아래와 같다. 합성곱은 입력데이터와 필터의 각각의 요소를 서로 곱한 후 다 더하면 출력값이 된다. element-wise 방식이라고도 한다. 1*2 + 2*0 + 3*1 + 0*0 + 1*1 + 2*2 + 3*1 + 0*0 + 1*2 = 15이다. 이렇기 때문에 4x4(입력 데이터) * 3x3(필터) = 2x2(결과)가 나온다. Input 데이터를 convolution 연산을 한다. 이렇게 뽑아낸 feature map들의 차원을 축소시켜 핵심을 뽑아낸다(subsampling). 이후 convolution, subsampling을 반복하여 차원을 줄인다. 이..

CS/ML DL 2021.07.18

딥 러닝: 기울기 소실과 폭주 (Gradient Vanishing / Exploding)

MLP를 학습시키는 방법에서 역전파(Backpropagation)가 있었다. 역전파는 출력층(output layer)에서 입력층(input layer)으로 거꾸로 오차 그래디언트(gradient)를 흘려보내며 각 뉴런의 입력값에 대한 손실함수의 그래디언트를 계산한다. 이렇게 계산된 그래디언트를 경사 하강법 단계에서 각 가중치 매개변수(W, b)를 업데이트 해준다. 하지만 위의 그림처럼 hidden layer가 많으면 많을수록 오차 그래디언트가 작아져 결국 가중치 매개변수가 업데이트되지 않는데, 이를 그래디언트 소실, 기울기 소실(gradient vanishing)이라고 한다. 이와 반대로 오차 그래디언트가 너무나 커져 오차가 무한대로 갈 경우, 학습이 되지 않아 이를 기울기 폭주(gradient expl..

CS/ML DL 2021.07.18

딥 러닝: 딥러닝 주요 스킬

Data augmentation(데이터 증강) overfitting을 해결하는 가장 좋은 방법은 데이터 개수를 늘리는 것이다. 실제적으로 수집하는 데이터의 양이 한정되어 있으므로 이런 data augmentation 기법을 사용한다. 주로 이미지 처리 분야의 딥러닝에서 사용하는 기법이다. Dropout(드랍아웃) 각 Batch마다 랜덤한 노드를 끊어, 다음 노드로 전달할 때 랜덤하게 출력을 0으로 만든다. "사공이 많으면 배가 산으로 간다"라는 속담처럼 overfitting이 발생했을 때 적당한 노드들을 탈락시켜 더 좋은 효과를 낼 수 있다. 고양이를 판별하는 모델에서 전문가(노드)가 너무 많다고 가정할 때, 이들 중 일부만 사용해도 충분한 결과를 낼 수 있다. 이들 중에서 충분한 만큼의 노드들만 선출해..

CS/ML DL 2021.07.13

딥 러닝: 배치 사이즈(Batch size), 에폭(Epoch), Activation Function, Overfitting

배치 사이즈(Batch size): 학습 시킬 데이터셋을 한번에 학습하는 것이 비용적, 시간적으로 불리하므로 학습을 용이하게 하기 위해 어떠한 단위로 데이터셋을 쪼개는데, 이러한 단위를 배치라고 한다. 1,000만 개의 데이터를 만 개씩 쪼갠다면, 배치 사이즈는 10,000이고, 이를 1,000번 반복한다. 이러한 과정을 iteration(이터레이션)이라고 한다. 에폭(Epoch): 데이터셋을 반복학습 시키는 만큼의 사이클 수. 1,000만 개의 데이터셋을 5번 학습시켰다면 Epoch은 5이다. Activation Function(활성화 함수) 노드의 임계치(Threshold)가 넘었을 경우에만 다음 노드로 신호를 보내는데 이를 가능하게 하는 함수이다. 예시로 Sigmoid, ReLU 등이 있으며, ac..

CS/ML DL 2021.07.13

딥 러닝: Deep Neural Network 구성 방법

딥러닝에서 네트워크 구조는 크게 세가지로 나누어진다. Input layer(입력층): 네트워크의 입력 부분으로, 학습시키고 싶은 x값이다. Output layer(출력층): 네트워크의 출력 부분으로, 예측한 값 y이다. Hidden layer(은닉층): 입력층과 출력층을 제외한 중간층이다. 풀어야하는 문제에 따라 입력층과 출력층의 모양은 정해져 있으므로, 은닉층의 모양에 집중해야 한다. 은닉층은 완전연결 계층(Fully connected layer, Dense layer)으로 이루어져 있다. 보편적으로 은닉층은 노드의 개수가 늘어났다가 줄어드는 형태를 띈다. 입력층 노드 (4개) - 첫번째 은닉층 노드 (8개) - 두번째 은닉층 노드 (16개) - 세번째 은닉층 노드 (8개) - 출력층 노드 (3개)와 ..

CS/ML DL 2021.07.13

딥 러닝: 딥러닝이란

딥러닝은 머신 러닝으로 기계를 학습하는 방법 중 하나이다. Linear Regression과 Logistic Regression 모두 1차 함수를 이용하여 문제를 풀었지만, 현실에서는 직선으로 설명할 수 없는 문제들이 많다. XOR 문제와 같이. 그러나 이 말을 바꿔 말하자면 비선형으로 풀 수 있는 문제들이 있다는 소리이다. 딥러닝 초기에는 비선형 모델을 만들기 위해 선형 회귀를 여러번 반복하였다. 하지만 선형 회귀를 여러번 반복한다 해도 비선형이 되는 것이 아니어서, 선형 회귀 사이의 비선형을 추가하게 되었다. 이런 방식으로 층(Layer)를 여러 겹으로 쌓게 되었고, 층을 깊게(Deep) 쌓는다고 하여 딥러닝이라고 불리게 되었다. 딥러닝은 주로 Deep nueral networks, Multilaye..

CS/ML DL 2021.07.13

머신 러닝: 전처리 (Preprocessing)

머신러닝을 하기 위해서는 예측값과는 동떨어진 값, 예외를 제거해야 합니다. 이런 식의 예외를 아웃라이어라고 합니다. 아웃라이어 제거, null 값이 들어가 있는 행 제거, 정규화(normalization)과 표준화(Standardization) 등을 전처리(Preprocessing)이라고 합니다. 정규화(Normalization) 정규화는 데이터를 0과 1사이의 범위를 가지도록 만든다. 같은 특성의 데이터 중에서 가장 작은 값을 0으로 만들고, 가장 큰 값을 1로 만든다. 수식은 아래와 같다. 따라서 아래는 정규화하기 전의 데이터와 정규화 후의 데이터를 나타내는 표이다. 이렇게 정규화를 하면 서로 다른 기준을 가진 데이터들을 비교할 수 있게 된다. 표준화(Standardization) 표준화는 데이터의 ..

CS/ML DL 2021.07.12

머신 러닝 : 다항 논리 회귀 (Multinomial logistic regression)

Binary logistic regression은 참이냐 거짓이냐. 수업을 이수했냐 이수 안 했냐. 등과 같이 두 가지만을 분류하는 방법이었다. Multinomial logistic regression에서는 분류하는 클래스가 3개 이상일 경우를 말하는데, 이를 표현하기 위한 Softmax function과 one-hot encoding을 알아보자. 기본적으로 분류되는 클래스는 보통 정수이다. 이를 컴퓨터가 더욱 편하게 사용할 수 있도록 one-hot encoding을 실시한다. one-hot encoding을 실시하면 총 클래스의 개수만큼 element를 가지는 배열로 나타내지는데, 이때 클래스의 인덱스 위치에만 1이고 나머지는 0인 구조이다. B와 같은 경우엔 1번 인덱스를 가진 클래스이고, 총 클래스..

CS/ML DL 2021.07.12

머신 러닝: 로지스틱 회귀의 비용 함수

로지스틱 회귀의 비용 함수는 아래와 같다. 수식만 보면 이해가 잘 되지 않으니 그래프로 확인해보자. 정답이 0일 경우에는 가설 함수로 예측한 값 H(x)가 0일 확률을 1(100%)이 되도록 학습을 시켜야 하고, 1일 확률을 0(0%)으로 되도록 학습을 시켜야 한다. 정답이 1일 경우에는 가설 함수로 예측한 값 H(x)가 1일 확률을 1(100%)이 되도록 학습을 시켜야 하고, 0일 확률을 0(0%)으로 되도록 학습을 시켜야 한다. 그래프를 조금 더 자세히 보자면, Cost가 줄어들수록, 가설 함수로 예측한 값 H(x)가 정답을 나타낼 확률이 높아진다. 그와 반대로, 가설 함수로 예측한 값 H(x)가 정답이 아닌 값을 나타낼 확률이 높아진다면 Cost는 무한대에 수렴한다. 그래서 학습을 하기 위해선 정답..

CS/ML DL 2021.07.12

머신 러닝 : 로지스틱 회귀 (Logistic Regression)

선형 회귀만으로 문제를 해결하려고 하면 이런 결과가 나온다. 결국 선형 회귀로만으로는 현실을 예측하고 문제를 해결할 수 없다. 이러한 것을 해결하기 위해 고안된 것이 로지스틱 회귀이다. 로지스틱 회귀는 위에서 보이는 Sigmoid Function (시그모이드 함수)를 사용하는데, 시그모이드 함수는 아래와 같다. 시그모이드 함수는 입력값(x)이 음수 방향으로 향할수록 출력값(y)이 0에 가까워지고, 입력값(x)이 양수 방향으로 향할수록 출력값(y)이 1에 가까워지고, 여기서 중요한 것은 출력 값은 무조건 0과 1 사이에 존재한다는 것이다. 함수의 내용은 알아두기만 하면 되고, 그래프의 모양을 기억하자. 가설을 이끌어내는 방식이 이런 형태인데, 아래는 내가 정리해본 내용이다. 기존 데이터셋의 y(출력값)를 ..

CS/ML DL 2021.07.12