본문 바로가기
컴퓨터과학

혼자 공부하는 머신러닝 + 딥러닝 7장 요약

by 자유로운시간 2022. 5. 28.
반응형

텐서플로와 케라스

텐서플로는 구글이 2015년 11월 오픈소스로 공개한 딥러닝 라이브러리입니다. 이때를 기점으로 딥러닝에 대한 개발자의 관심이 늘어났고, 2016년 3월 알파고가 이세돌 9단을 이겨 대중에 알려지면서 그야말로 폭발적으로 인기가 높아졌습니다.


텐서플로는 그 후 많은 발전을 거듭하면서 2019년 9월 2.0 버전이 릴리스 되었습니다. 이 책에서는 텐서플로의 2.x 이상의 최신 버전을 사용합니다. 이미 예상했겠지만 코랩에는 이미 텐서플로가 설치되어 있기 때문에 다음처럼 간단히 임포트하여 사용할 수 있습니다.


텐서플로에는 저수준 API와 고수준 API가 있습니다. 바로 케라스가 텐서플로의 고수준 API입니다. 케라스는 2015년 3월 프랑소와 숄레가 만든 딥러닝 라이브러리입니다.

딥러닝 라이브러리가 다른 머신러닝 라이브러리와 다른 점 중 하나는 그래픽 처리 장치인 GPU를 사용하여 인공 신경망 훈련한다는 것입니다. GPU는 벡터와 행렬 연산에 매우 최적화되어 있기 때문에 곱셈과 덧셈이 많이 수행되는 인공 신경망에 큰 도움이 됩니다.

케라스 라이브러리는 직접 GPU 연산을 수행하지 않습니다. 대신 GPU 연산을 수행하는 다른 라이브러리 를 백엔드로 사용합니다. 예를 들면 텐서플로가 케라스의 백엔드 중 하나입니다. 이외에도 씨아노, CNTK와 같은 여러 딥러닝 라이브러리를 케라스 백엔드로 사용할 수 있습니다. 이런 케라스를 멀티-백엔드 케라스라고 부릅니다. 케라스 API만 익히면 다양한 딥러닝 라이브러리를 입맛대로 골라서 쓸 수 있는 셈이죠. 이를 위해 케라스는 직관적이고 사용하기 편한 고수준 API를 제공합니다.

프랑소와가 구글에 합류한 뒤 텐서플로 라이브러리에 케라스 API가 내장되었습니다. 텐서플로 2.0 부터는 케라스 API를 남기고 나머지 고수준 API를 모두 정리했고, 케라스는 텐서플로의 핵심 API가 되었습니다. 다양한 백엔드를 지원했던 멀티-백엔드 케라스는 2.3.1 버전 이후로 더 이상 개발되지 않습니다. 이제는 케라스와 텐서플로가 거의 동의어가 된 셈입니다.



인공 신경망은 생물학적 뉴런에서 영감을 받아 만든 머신러닝 알고리즘입니다. 이름이 신경망이지만 실제 우리 뇌를 모델링한 것은 아닙니다. 신경망은 기존의 머신러닝 알고리즘으로 다루기 어려웠던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하면서 크게 주목받고 있습니다. 인공 신경망 알고리즘을 종종 딥러닝이라고도 부릅니다.

텐서플로는 구글이 만든 딥러닝 라이브러리로 매우 인기가 높습니다. CPU와 GPU를 사용해 인공 신경망 모델을 효율적으로 훈련하며 모델 구축과 서비스에 필요한 다양한 도구를 제공합니다. 텐서플로 2.0부터는 신경망 모델을 빠르게 구성할 수 있는 케라스를 핵심 API로 채택하였습니다. 케라스를 사용하면 간단한 모델에서 아주 복잡한 모델까지 손쉽게 만들 수 있습니다.


밀집 층은 가장 간단한 인공 신경망의 층입니다. 인공 신경망에는 여러 종류의 층이 있습니다. 밀집 층에서는 뉴런들이 모두 연결되어 있기 때문에 완전 연결 층이라고도 부릅니다. 특별히 출력층에 밀집 층을 사용할 때는 분류하려는 클래스와 동일한 개수의 뉴런을 사용합니다.

원-핫 인코딩은 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두 0으로 변환합니다. 이런 변환이 필요한 이유는 다중 분류에서 출력층에서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해서 입니다. 텐서플로에서는 'sparse_categorical_entropy' 손실을 지정하면 이런 변환을 수행할 필요가 없습니다.



심층 신경망은 2개 이상의 층을 포함한 신경망입니다. 종종 다층 인공 신경망, 심층 신경망, 딥러닝을 같은 의미로 사용합니다.

렐루 함수는 이미지 분류 모델의 은닉층에 많이 사용되는 활성화 함수입니다. 시그모이드 함수는 층이 많을수록 활성화 함수의 양쪽 끝에서 변화가 작기 때문에 학습이 어려워집니다. 렐루 함수는 이런 문제가 없으며 계산도 간단합니다.

옵티마이저는 신경망의 가중치와 절편을 학습하기 위한 알고리즘 또는 방법을 말합니다. 케라스에는 다양한 경사 하강법 알고리즘이 구현되어 있습니다. 대표적으로 SGD, 네스테로프 모멘텀, RMSprop, Adam 등이 있습니다.


드롭아웃은 은닉층에 있는 뉴런의 출력을 랜덤하게 꺼서 과대 적합을 막는 기법입니다. 드롭아웃은 훈련 중에 적용되며 평가나 예측에서는 적용하지 않습니다. 텐서플로는 이를 자동으로 처리합니다.

콜백은 케라스 모델을 훈련하는 도중에 어떤 작업을 수행할 수 있도록 도와주는 도구입니다. 대표적으로 최상의 모델을 자동으로 저장해 주거나 검증 점수가 더 이상 향상되지 않으면 일찍 종료할 수 있습니다.


조기 종료는 검증 점수가 더 이상 감소하지 않고 상승하여 과대 적합이 일어나면 훈련을 계속 진행하지 않고 멈추는 기법입니다. 이렇게 하면 계산 비용과 시간을 절약할 수 있습니다.

합성곱은 밀집 층과 비슷하게 입력과 가중치를 곱하고 절편을 더하는 선형 계산입니다. 하지만 밀집 층과 달리 각 합성곱은 입력 전체가 아니라 일부만 사용하여 선형 계산을 수행합니다.

합성곱 층의 필터는 밀집 층의 뉴런에 해당합니다. 필터의 가중치와 절편을 종종 커널이라고 부릅니다. 자주 사용되는 커널의 크기는 (3, 3) 또는 (5, 5)입니다. 커널의 깊이는 입력의 깊이와 같습니다.


특성 맵은 합성곱 층이나 풀 링 층의 출력 배열을 의미합니다. 필터 하나가 하나의 특성 맵을 만듭니다. 합성곱 층에서 5개의 필터를 적용하면 5개의 특성 맵이 만들어집니다.

반응형

'컴퓨터과학' 카테고리의 다른 글

RNN 과 LSTM의 개념과 알고리즘  (0) 2022.05.29
Tensorflow2 API 모델링  (0) 2022.05.25
Hash 알고리즘, 해시함수  (0) 2022.05.25
cs 221 미시간 대학 버전 오차역전법  (0) 2022.05.09