Bamboo is coming

딥러닝 첫걸음(김성필, 한빛미디어, 2016) 읽은 후기, 정리 본문

딥러닝 첫걸음(김성필, 한빛미디어, 2016) 읽은 후기, 정리

twenty 2022. 1. 6. 15:49

저자는 항공우주연구원에서 무인기 제어 및 소프트웨어를 개발하는 일을 했다고 한다. 저자 서문에 따르면 자신이 겪었던, 새로운 지식을 처음 배우는 고통을 다른 사람들은 덜 겪을 수 있기를 바라는 마음으로 책을 만들었다고 했는데 정말 그랬다. 코드를 포함해 전체 192페이지의 책 안에서 단계별로 명확하고 쉽게 구성되어 있다. 

그동안 딥러닝을 여러번 듣고 딥러닝에 관련된 유투브 영상도 몇 개 찾아봤지만 이 책으로 인해서 딥러닝에 대해 명확하게 알게되었다. 특히 사진을 구분하는 등의 인공지능 구조가 궁금했는데 대략적으로 이해할 수 있었다. 

 

인공지능, 머신러닝, 딥러닝의 구분

인공지능 : 특정 기술 분야를 지칭한다기보다는 지능적인 요소가 포함된 기술을 총칭하는 용도로 쓰인다.

머신러닝 : 인공지능 분야에서 특정 종류의 기술을 따로 묶어 부르는 이름, 데이터를 이용한 모델링 기법, 데이터에서 모델을 찾아내는 기법. 머신러닝 기법이 데이터를 분석해 모델을 스스로 찾아내는 과정이 마치 기계가 데이터를 학습해 모델을 알아내는 것과 비슷해서 이런 이름이 붙었다.

딥러닝 : 머신러닝의 일종

📌 여기서 '모델'은 머신러닝으로 얻어내는 최종 결과물을 의미한다.

 

머신러닝

머신러닝은 학습 방법에 따라 지도학습, 비지도학습, 강화학습으로 나눌 수 있으며 지도학습은 입력값과 정답을 함께 학습 시키고 비지도학습은 입력값만 학습시켜 스스로 학습하게 한다.

지도학습은 모델의 용도에 따라 크게 '분류'와 '회귀' 문제로 나눠지고 분류는 입력 데이터가 어느 범주에 속하는지를 알아내고 회귀는 값을 예측한다.

 

머신러닝에서 주의할 부분

과적합 : 학습 데이터 모두가 정답이라 생각하고 모델을 지나치게 맞추다 보면 일반화 성능이 떨어지는 모델을 얻게 되는데 이를 과적합이라고 함. 복잡한 모델에서 과적합이 일어나기 쉬움. 따라서 대표적으로 정칙화와 검증을 통해 과적합에 대항함. 

- 정칙화 : 모델의 형태를 최대한 간단하게 만들려는 수치해석적인 기법이다. 모델의 성능을 약간 희생하더라도 모델을최대한 간단하게 만들어 과적합에 빠지지 않도록 함.

- 검증 : 학습 데티러의 일부를 따로 떼어 내서 학습에는 사용하지 않고 모델의 성능 검증용으로 사용하는 기법. 즉 학습 데이터에 대한 모델의 오차로는 과적합 여부를 판단하기 불가능하니 일부 학습 데이터를 사용해 과적합을 검증하겠다는 의도로 성능 저하가 심하면 과적합으로 모델을 수정하는 등의 조치를 취한다.

 

신경망

신경망은 머신러닝에서 구현되는 모델의 다양한 형태 중 하나이다. 수많은 신경세포가 연결되어 뇌를 구성하는 것처럼 신경망은 뇌의 신경세포에 해당되는 '노드'를 연결해 만든 네트워크이다. 뇌의 작동 원리 중에서 가장 중요한 신경세포들의 연결 관계를 신경망은 노드들의 연결 가중치로 흉내 낸다.

단층 신경망 입력층 - 출력층
다층 신경망 얕은 신경망 입력층 - 은닉층 - 출력층
심층 신경망 입력층 - 은닉층들 - 출력층

델타 규칙은 가중치를 조절하는 규칙으로 어떤 입력 노드가 출력 노드의 오차에 기여했다면, 두 노드의 연결 가중치는 해당 입력 노드의 출력과 출력 노드의 오차에 비례해 조절한다.

 

신경망의 발전 과정

최초의 신경망인 단층 신경망은 개발된 지 얼마 지나지 않아 머신러닝 분야의 실제 문제를 풀기에는 근본적인 한계가 있다는 사실이 밝혀진다. 당시의 연구자들도 이 문제를 해결하려면 다층 신경망이 필요하다는 사실을 잘 알고 있었다. 하지만 단층 신경망에서 은닉층을 추가한 얕은 신경망은 다층 신경망의 학습 규칙을 찾아내지 못해 개발되기까지 30여년이 걸렸다. 

역전파 알고리즘이 개발되면서 다층 신경망의 학습 문제가 해결됐고 신경망은 다시 많은 관심을 받게 되었으나 얼마 못 가 다시 한 번 성능의 한계를 드러냈다. 기대보다 성능이 나오지 않았다. 이런 한계를 극복하기 위해 다양한 연구가 진행되었다. 신경망은 구조와 개념이 간단해 새롭게 변형시켜 볼 여지가 많지 않다. 결국 신경망은 한계가 명백하다고 판정을 받고 침체를 겪게 된다.

신경망의 침체는 20여 년 가까이 계속되다가, 2000년 중반 들어 딥러닝으로 마침내 돌파구를 찾게 되었다.  심층 신경망 기반 딥러닝이 등장하기까지 다시 20여 년이 걸린 까닭은 성능 문제였다. 다층 신경망의 은닉층을 늘려 역전파 알고리즘으로 학습시키면 오히려 성능이 더 떨어졌다. 딥 러닝은 이 문제를 해결했다. 

여기서 델타 규칙으로는 다층 신경망을 학습시킬 수 없다. 오차를 기반으로 학습하는 델타 규칙은 은닉층의 오차가 정의조차 되어 있지 않는 다층 신경망에서 학습할 수 없다. 여기서 은닉층의 오차를 정의하는 방법을 새로 고안하게 된다. 대표적으로는 역전파 알고리즘이 있다.

딥러닝

딥러닝은 간단히 '심층 신경망을 이용한 머신러닝 기법'이라고 정의할 수 있다. 기존의 신경망은 은닉층이 깊을 수록 학습이 잘 안되어 성능이 오히려 떨어지는 문제가 있었으나 딥러닝은 이러한 문제를 해결했다. 딥러닝은 특정한 결정적 기술 덕분이 아니라 여러가지 작은 기술적 개선들이 모인 결과이다.

 

역전파 알고리즘

신경망에서 입력 데이터는 입력층에서 은닉층을 거쳐 출력층으로 흘러들어가지만 역전파 알고리즘은 신경망의 출력 오차를 출력층에서 시작해 입력층 바로 앞 은닉층까지 역순으로 이동시킨다. 이 과정이 마치 출력 오차가 역방향으로 퍼져나가는 것과 비슷하다고 해서 역전파 알고리즘이라고 한다.

1. 신경망의 가중치를 적당한 값으로 초기화

2. 학습 데이터 {입력, 정답}에서 '입력'을 신경망에 입력해 출력값을 얻고 이 출력값과 정답을 비교해 오차를 구하고 출력 노드의 델타를 계산

3. 출력 노드의 델타를 역전파시켜 바로 앞 은닉 노드들의 델타를 계산하는 과정은 입력층 앞 은닉층까지 반복한다.

4. 신경망의 가중치를 변경

5. 모든 학습 데이터를 2~4단계의 과정으로 반복

6. 신경망이 학습될 때까지 2~5단계 과정 반복

신경망의 오차를 측정하는 척도가 비용함수인데 비용함수는 신경망의 오차 크기에 비례한다. 어떤 비용함수를 채택하냐에 따라 학습규칙, 즉 역전파 알고리즘의 수식이 달라진다. 구체적으로는 출력 노드이 델타 계산 수식이 약간 달라진다.

 

신경망과 분류

신경망으로 분류 모델을 만들 때는 이진 분류(범주 2개)인지 다범주 분류(범주 3개 이상)인지에 따라 출력층 노드의 개수와 활성함수를 다르게 구성하는 게 보통이다. 이진 분류 문제일 경우에는 출력노드는 1개, 다범주 분류 문제에서는 범주의 개수만큼 구성한다.

이진분류는 스팸 메일의 판별(스팸 또는 정상)이나, 대출 승인(승인 또는 거절) 등이 대표적인 문제이다.

 

컨벌루션 신경망(컨브넷)

컨벌루션 신경망은 영상인식에 특화된 심층 신경망으로 영상을 계층적으로 깊게 처리했을 때 얼마나 성능 개선이 가능한지 보여주는 대표적인 사례이다. 컨브넷은 이미 1980~90년대에 개발된 오래된 기술이다. 실제 현장의 복잡한 이미지를 처리하기에는 역부족이라는 이유로 한동안 잊혀졌다가 2012년에 극적으로 부활하여 컴퓨터 비전 분야에 널리 쓰이고 있다.

컨브넷은 단순히 은닉 계층을 추가해 깊게 만든 신경망이 아니라 뇌의 시각피질이 이미지를 처리하고 인식하는 원리를 차용한 신경망이다. 기본적으로 영상 인식은 분류 문제에 해당되는데 예를 들어 사진을 보고 고양이인지 개인지 인식해내는 문제는 해당 사진을 개와 고양이 중 어느 범주로 분류할 지와 같은 문제이다. 

그런데 어떤 영상 인식 기술을 사용하든지 간에 원본 이미지를 바로 사용하면 인식 성능이 별로 좋지 않다. 원본 이미지의 고유한 특징이 잘 드러나게 가공된 이미지를 사용해야 성능을 높일 수 있다. 그래서 이미지에서 적절한 특징을 추출해 내기 위한 다양한 기법이 개발되었다. 그동안은 이 특징 추출기를 주로 해당 분야의 전문가가 수작업으로 설계했기 때문에 비용과 시간이 많이 들고 성능이 들쭉날쭉한 문제가 있었다.

하지만 컨브넷은 이러한 특징 추출기를 수작업으로 설계하지 않고 신경망의 학습 과정에 포함시켜 일괄 처리한다. 구체적으로 컨브넷에는 특수한 형태의 신경망으로 구성된 특징 추출기가 포함되어 있는데, 이 신경망의 가중치도 학습을 통해 결정된다. 이렇게 사람이 직접 설계하던 특징 추출 작업을 자동화시킨 점이 컨브넷의 가장 큰 특징이자 강점이다. 

컨브넷은특징 추출 신경망이 깊을수록 대체로 영상 인식 성능이 더 좋아지지만 그만큼 학습시키기가 어렵다. 이러한 이유 때문에 컨브넷이 실용성이 없다고 여겨져 오랫동안 잊혀졌다.

구체적으로 컨브넷은 입력 이미지의 특징을 추출하는 신경망과 특징 이미지의 분류를 판별하는 신경망으로 구성되어 있다. 학습 과정을 통해 분류 신경망 뿐만 아니라 특징 추출 신경망의 가중치들도 학습된다. 특징 추출 신경망은 컨벌루션 계층과 풀링 계층을 차례로 쌓은 형태로 되어있다. 컨벌루션 계층은 이름 그대로 컨벌루션을 모아 놓은 계층이고 풀링 계층은 주위의 픽셀을 묶어 하나의 대표 픽셀로 바꾼다. 즉 풀링 계층은 이미지의 차원을 축소하는 역할을 한다. 

컨벌루션 계층에서 입력 이미지를 다른 이미지로 변환하는 필터를 연산해 특징 맵을 얻게 된다. 여기서 이 필터는 2차원 행렬이다. 그리고 이 필터는 사람이 정하지 않고 학습을 통해 결정된다. 

풀링 계층은 입력 이미지에서 특정 영역에 있는 픽셀들을 묶어서 하나의 대표 값으로 축소한다. 풀링 계층의 연산을 위해 풀링할 픽셀을 어떻게 선택할 지 이 픽셀의 대표값을 어떻게 결정할 것인지 정한다. 보통 정방 행렬 형태로 픽셀들을 선택하고 센택한 픽셀들로부터 하나의 대표 값을 계산하는 연산으로 보통 평균값이나 최대값을 많이 사용한다. 풀링 계층은 입력 이미지에서 인식 대상이 한 쪽으로 치우쳐 있거나 돌아가 있어도 어느정도 보상해주고 이미지의 크기를 줄여주어 계산량을 줄이고 과적합을 방지하는 데도 도움이 된다. 

 


전산수학을 배우면서 어느 곳에 쓰이는 지도 모르고 그냥 행렬.. 계산.. 머리 속에 주입하기만 했는데 행렬이 이렇게 사진을 분석하는 데에도 쓰일 수 있다는 걸 알게 되니까 너무 신기했다. 이론으로만 배웠던 지식들이 이렇게 쓰일 수 있구나 이 책을 읽으면서 대략적으로 알 수 있었다. 그 외 함수적인 부분들은 일단 스킵했지만 일단은 인공지능에 첫걸음을 뗀 듯하다.

인공지능이 발전된 과정을 보면 기술의 발전은 응용과 딱 맞는 환경 속에서 피어나는 듯 하다. 아이언맨의 아버지가 후대를 위해 신물질을 남겨둔 것처럼 과거에도 미래를 위해 쓰여질 것으로 기술을 남겨둔 게 참 멋있다. 

 

교육은 세상을 바꿀 수 있는 가장 강력한 무기입니다.
(넬슨 만델라)

 

이 문구는 이 책의 또 다른 시리즈인 텐서 플로우 첫걸음인데 딥러닝의 발전을 읽고 나서 이 문구를 보니 훨씬 가슴에 와닿는다.

Comments