2023. 8. 2. 14:13ㆍ책

딥러닝은 기계학습의 한 분야로써 1960년 프랭크 로젠블라트가 '퍼셉트론' 이론을 발표한 이후, '합성곱신경망 (CNN)', 'RNN', 'GAN' 등 최신의 기계학습에 있어서도 그 중심에 서있으며, 초기의 기계학습보다 더 진보되고 구조화된 오픈소스 프레임워크 (Pytorch, Tensorflow, Keras)를 이용하여 쉽게 구현할 수 있다.
하지만 내부적 알고리즘과 구조적인 메커니즘을 이해하지 못하고 사용한다면 모델의 성능향상을 도모할 수 없으므로, 여기서는 실무적 코드의 성능 향상을 목적으로 구현하기보다는 그 알고리즘 내부의 동작 방식과 원리 이해에 집중하였다.
이 책은 정확한 숫자를 예측하는 '회귀 문제'와 클래스라고 불리는 라벨 맞추는 '분류 문제'를 당뇨병 예측, 체력 검사, 붓꽃, 손글씨 예제를 통해 개념을 확실히 잡아주고 있다.
어려운 수학적 개념을 그림과 수식을 통해 이해를 높였으며, 그 처리 과정을 엑셀로 보여주기 때문에 독자는 방향을 잃지 않고 끝까지 잘 따라갈 수 있다.

비전공자도 쉽게 이해할 수 있도록 엑셀로 각 단계별 값의 변화를 시각화할 수 있는 코드도 추가하여 이해를 돕고 있지만, 기본적으로 딥러닝에 적용되는 수학이 난이도가 높고 딥러닝의 개념도 쉽지 않으므로 비전공자라면 이 책과 함께 다른 이론서와 관련 수학책을 병행하여 학습하기를 바란다.
파이썬과 엑셀로 시작하는 딥러닝 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com

많은 데이터와 정답을 알려주면 컴퓨터는 데이터의 특징(Feature)을 스스로 학습해 나가는데, 이러한 머신러닝 방법 중 사람의 뇌(뉴런)를 모방하여 학습하게 만든 방법이 '딥러닝'이다.
데이터를 모은다고 가정할 때, 그 데이터들에는 모두 오차가 있을 것이다. 가지고 있는 데이터를 설명할 수 있는 최적의 파라미터를 찾는 과정이 딥러닝을 학습하는 과정이다.

경사하강법 (Gradient Descent)은 손실 함수의 기울기를 따라 가중치를 업데이트하는 방식으로 학습을 진행하는데, 여기서 손실 함수는 예측값과 실제값의 차이를 나타내는 함수이며, 가중치는 신경망의 학습 파라미터이다.
그림에서 보면, 내려오려는 산은 손실 함수가 되며, 내려오는 주체는 우리가 바꿀 수 있는 값, 즉 w(가중치)이다.
경사하강법은 가중치를 업데이트하여 손실 함수의 값을 최소화하는 것을 목표로 한다.

학습 과정에서 예측하려는 함수는 선형 함수가 아니라, 비선형 함수이다. 비선형성을 만들 수 있는 함수를 활성화 함수(Activation Function)라고 부르는데, 그중에서 가장 많이 사용하는 것이 Relu 함수이다.
Relu는 입력값이 양수이면 값을 그대로 전달하고 음수이면 값을 0으로 만들어 전달한다.

임의로 생성한 데이터를 바탕으로 딥러닝 모델을 만들고 학습시키는 작업을 하였고, 다음은 그래프 예측 결과이다.

실제 데이터로 인공지능 모델을 만들 때는 고려해야 할 부분이 있다.
데이터 세트에 대해서 결측치 처리 및 데이터 분포를 맞추기 위한 전처리를 해야 하는 것과 모델이 과소접합이나 과대접합되는 것을 방지하고 모든 데이터에 적용할 수 있도록 일반화 성능을 높여야 한다.

이미지 데이터는 보통 2차원(흑백 이미지의 경우)이고, 근접한 픽셀끼리는 서로 연관이 매우 크다. 이러한 이미지의 특성을 잘 고려한 딥러닝 방법을 생각해 보자.

합성곱 (Convolution) 연산은 이미지와 필터(Filter)를 곱하여 새로운 이미지를 만드는 연산으로, 이 필터를 이미지 위에서 움직이면서 각 위치에서 합성곱 연산을 수행한다. 이때 필터는 이미지의 작은 부분을 특징적으로 나타내는 역할을 한다.
이러한 필터를 예전에는 사람이 직접 만들어서 적용시켜 다양한 이미지를 생성했는데, 딥러닝에서는 이러한 필터를 컴퓨터가 직접 학습하도록 한다. 이러한 방법을 CNN (Convolution Neural Network)라고 하며, 크게 두 가지 특징을 갖는다.
첫 번째는 파라미터를 공유한다는 것으로, 출력으로 나오는 값들은 모두 같은 필터를 거쳐 나오게 되어 학습할 파라미터 숫자를 줄일 수 있다. 두 번째는 지역성을 갖는다는 것으로, 출력으로 나온 픽셀은 그 부근의 픽셀들의 영향으로 나오게 된다.
이 책에서는 CNN을 활용하여 손글씨 데이터를 분류하는 예를 들고 있다.

주식 가격이나 날씨와 같이 시간에 따라 변화하는 시계열 데이터 또는 단어의 철자 배열이나 단어 간의 순서가 반영돼야 하는 규칙성을 시퀀스(Sequence)라고 한다. 시퀀스를 예측하기 위해서는 과거와 현재의 정보를 바탕으로 미래를 예측해야 하는데, 여기서는 시퀀스 데이터의 추세를 기반으로 미래에 대해서 예측하는 모델인 RNN (Recurrent Neural Network)에 대해서 알아본다.

어떠한 모델이 apple 단어의 알파벳을 순서대로 입력하고 있고 다음 알파벳을 예측한다고 가정할 때, 동일한 “p”를 입력을 받았을 경우 첫 번째에는 "p"를 예측해야 하고, 또 다른 경우에는 "1"을 예측해야 한다. 이런 경우 이전의 알파벳까지 고려하여 단어를 선정해야 한다.
인공지능 모델로 이를 구현하기 위해서는 이전 상태의 정보를 확인하기 위한 장치가 필요하며, 이 역할을 하는 것을 순환 뉴런(Recurrent Neuron)이라고 한다. 그리고 이러한 뉴런이 포함된 네트워크 구조를 순환신경망 (RNN-Recurrent Neural Network)이라고 한다.
ANN (Artificial Neural Network) 구조에서는 입력값들이 은닉층을 지나 출력층으로만 향하는 단방향의 구조이지만, RNN 구조에서는 앞서 설명했던 순환 뉴런이 존재하여 이전 입력을 기반으로 예측할 수 있도록 도와준다.
이와 같은 구조 때문에 RNN 모델이 시계열 데이터, 자연어 처리(NLP), 단어/알파벳 예측 등에서 적합한 모델이다.
이 책에서는 100개의 단어를 학습시키고 이를 예측하는 예제를 소개하고 있다.
한 단어에 입력 데이터와 출력 데이터(정답)가 모두 같이 있는 구조로, 모델 학습 과정 중에 확인된 정확도(약 42%)와 유사하게 약 절반 정도의 철자를 맞추는 것을 확인할 수 있다.
사실 현재 모델은 단층의 RNN을 사용하고 있고 단어의 순서를 기억하는 Weight의 개수가 한정적이기 때문에 간단한 패턴이나 짧은 단어를 학습하는 데는 유용하지만 더 복잡한 패턴이나 긴 시퀀스 데이터를 처리하는 데는 한계가 있다
이런 경우에는 RNN의 Layer를 더 많이 쌓은 다층 RNN (Multi-Layer RNN)을 사용하여 성능을 향상시킬 수 있고, RNN 이후에 한 단계 발전된 LSTM (Long Short-Term Memory) 등의 모델을 사용하면 더 복잡한 패턴을 학습하고 더 긴 시퀀스의 데이터를 효과적으로 처리할 수 있다.
책 후반부 부록으로, 구글 코랩과 구글 스프레드시트를 연동하여 사용하는 방법 및 텐서플로(Tensorflow) 사용법에 대해 설명되어 있어서 복잡하게 프로그램을 설치할 필요없이 쉽게 테스트하여 볼 수 있다.

※ 이 포스팅은 정보문화사 출판사로부터 도서를 제공받아 작성하였습니다.
'책' 카테고리의 다른 글
[서평] 챗GPT 영어 혁명 - AI와 함께 떠나는 어학연수 (0) | 2023.08.29 |
---|---|
[서평] 박원갑 박사의 부동산 심리 수업 (0) | 2023.08.11 |
[서평] 돈이 모이는 재물운의 비밀 (0) | 2023.07.20 |
[서평] 차가운 자본주의 (1) | 2023.07.14 |
[서평] 챗GPT와 Bard 질문법 (0) | 2023.07.07 |