LearnRun
[KT AIVLE 3기] 5주차 후기 - 딥러닝 기초 본문
◈ Contents
본 게시글은 AIVLE 기자단 활동의 일환으로 작성되었습니다.
김건영 강사님과 함께합니다!
에이블 1기와 2기 모두 강사를 맡으셨어요.
뛰어난 딕션 덕분에 귀에 쏙쏙 꽂히는 강의가 인상깊습니다.
또한 매 강의 시작마다 리마인드를 하는 부분, 도식화하는 부분 모두.. 매우 마음에 쏙 들었습니다.
딥러닝 기초
본격적으로 구글 코랩을 사용합니다!
GPU를 사용할 소지가 있는 만큼 그렇게 되나 봅니다.
저는 구글 드라이브 데스크탑을 기존의 AIVLE 폴더에 연동해서,
주피터랩과 코랩 모두 함께 접근할 수 있도록 설정하였습니다.
요거 꿀팁입니다.
바로바로 동기화되니 너무 편하더군요. 강추.
Tensorflow의 모델 구성 방식
Sequential API
간단하고 순차적인 모델을 만들 때 사용되는 인터페이스입니다.
각각의 레이어를 순차적으로 쌓아 모델을 구성하며, 간단한 구조의 신경망을 빠르게 구축할 수 있는 장점이 있습니다.
주로 이미지 분류나 간단한 순차 데이터 처리와 같은 작업에 사용됩니다.
Funtional API
좀 더 복잡한 모델을 만들 때 사용되는 인터페이스로, 다양한 레이어 간의 연결과 흐름을 유연하게 제어할 수 있습니다.
여러 입력과 출력을 다루거나, 다중 출력 모델 등을 구축할 때 유용합니다.
시퀀셜 API보다 더 자유로운 모델 아키텍처를 구성할 수 있습니다.
레이어 구성 방식
입력 레이어 (Input Layer)
신경망에 데이터를 입력하는 역할을 합니다. 입력 데이터의 특성 수에 따라 노드의 개수가 결정됩니다.
예를 들어, 이미지 데이터의 경우 각 픽셀 값이 하나의 노드에 매핑될 수 있습니다.
히든 레이어 (Hidden Layers)
입력 레이어와 출력 레이어 사이에 위치한 중간 계층입니다.
데이터의 특징을 추출하고 중요한 패턴을 학습합니다. 여러 개의 히든 레이어를 쌓아서 복잡한 함수를 근사할 수 있습니다.
출력 레이어 (Output Layer)
네트워크의 최종 출력을 생성하는 레이어입니다.
문제 유형에 따라 노드의 개수와 활성화 함수가 결정됩니다.
예를 들어, 이진 분류 문제에서는 하나의 노드와 시그모이드 활성화 함수를 사용할 수 있습니다.
활성화 함수 (Activation Functions)
뉴런의 출력을 결정하는 함수로, 비선형성을 도입하여 신경망이 복잡한 관계를 학습할 수 있도록 합니다.
흔히 사용되는 활성화 함수로는 시그모이드, 렐루(Relu), 하이퍼볼릭 탄젠트 등이 있습니다.
손실 함수 (Loss Function)
신경망의 예측 값과 실제 값 사이의 차이를 측정하는 함수입니다.
학습 중에 손실 함수를 최소화하여 모델을 향상시킵니다.
회귀 문제에서는 평균 제곱 오차(MSE)를, 분류 문제에서는 크로스 엔트로피(Cross Entropy)를 자주 사용합니다.
옵티마이저 (Optimizer)
손실 함수를 최소화하기 위해 신경망의 가중치를 조정하는 알고리즘입니다.
확률적 경사하강법(SGD)부터 더 발전된 알고리즘인 아담(Adam)까지 다양한 옵티마이저가 있습니다.
배치 정규화 (Batch Normalization)
신경망 내부에서 입력 데이터의 평균과 분산을 조절하여 학습을 안정화하고 수렴 속도를 높이는 기법입니다.
과적합을 줄이고 학습을 안정화하는 데 도움을 줍니다.
드롭아웃 (Dropout)
히든 레이어의 노드 중 일부를 무작위로 제외하고 학습하는 기법입니다.
과적합을 방지하고 일반화 능력을 향상시킵니다.
Tensorflow의 로지스틱 회귀
Sigmoid Funtion
비선형 활성화 함수 중 하나로, 입력값을 0과 1 사이의 값으로 변환하는 함수입니다.
그래프상으로는 S 모양을 가지며, f(x) = 1 / (1 + e^(-x)) 로 정의됩니다.
여기서 e는 자연상수(2.71828...)이며, x는 입력값을 나타냅니다.
Sigmoid 함수는 입력값이 아무리 크거나 작아도 결과값이 항상 0과 1 사이에 존재합니다.
로지스틱 회귀와 같은 분류 문제에서 활성화 함수로 많이 사용됩니다. 주로 이진분류 문제에서 주로 활용됩니다.
단, 입력값이 크거나 작을 때 그래디언트가 소실되는 문제가 있어, 깊은 신경망에서는 조심할 필요가 있습니다.
RELU
ReLU(Rectified Linear Activation) 함수는 인공 신경망에서 주로 사용되는 활성화 함수 중 하나입니다.
입력값이 0보다 작을 때는 0으로 출력하고, 0보다 큰 경우에는 입력값을 그대로 반환합니다.
비선형성(Non-linearity)
ReLU 함수는 비선형 함수로, 딥 러닝 모델이 복잡한 패턴을 학습할 수 있도록 돕습니다.
상기 언급한 Sigmoid 같은 활성화 함수들이 큰 입력값에서 그래디언트 소실 문제가 발생할 수 있었고, 이에 ReLU 함수는 입력값이 양수일 때 그레디언트가 소실되지 않도록 도와줍니다.
Dense Layer
Dense Layer(밀집층)은 인공 신경망의 한 종류인 다층 퍼셉트론(MLP)에서 사용되는 기본적인 층입니다.
Dense Layer의 각 뉴런은 이전 층의 모든 뉴런과 연결되어 있으며, 가중치와 편향이 이용되어 입력 데이터의 선형 조합을 계산합니다. 그리고 활성화 함수를 통과하여 출력값을 만들어냅니다. 이러한 구조로 인해 Dense Layer는 입력 데이터의 복잡한 패턴을 학습하고 표현할 수 있는 강력한 능력을 가지고 있습니다.
예를 들어, 이미지 분류 작업을 수행하는 인공 신경망에서 첫 번째 Dense Layer는 픽셀값을 입력으로 받아서 각 뉴런이 이미지의 특징을 학습하고 이를 다음 층으로 전달하는 역할을 합니다. 마지막 Dense Layer는 클래스에 대한 확률 분포를 출력으로 내놓아 분류 작업을 수행합니다.
Dense Layer는 인공 신경망의 중요한 구성 요소 중 하나로, 다양한 딥 러닝 모델에서 활용되며 실제 데이터의 특징을 추출하고 변환하는 데 사용됩니다.
Tensorflow의 다중 분류
softmax function
다중 클래스 분류 문제에서 사용되는 활성화 함수로, 각 클래스에 대한 확률을 계산하기 위해 주로 사용됩니다.
입력값을 확률 분포 형태로 변환하여 클래스 간의 상대적인 확률을 계산하는 데 도움을 줍니다.
입력값을 받아 각 클래스에 대한 지수 함수를 계산하고, 이를 모든 클래스에 대한 합으로 나누어 확률을 계산합니다.
계산된 확률을 이용하여 가장 높은 확률을 가지는 클래스를 선택하게 됩니다.
[2.0, 1.0, 0.1]과 같은 입력값을 [0.659, 0.242, 0.099]와 같은 확률 분포로 변환할 수 있습니다.
입력값에 대한 다양한 클래스의 확률을 계산하고, 확률이 가장 높은 클래스를 선택하여 예측 결과를 내놓게 됩니다.
원 핫 인코딩
범주형 데이터를 다룰 때 사용하는 방법으로, 각 범주(category)를 고유한 이진 벡터로 표현하는 것입니다.
예를 들어, 숫자로 표현된 클래스 레이블을 0 또는 1로 이루어진 벡터로 변환하여 표현합니다.
각 범주 간의 관계를 독립적으로 표현하며, 머신 러닝 모델이 범주 간의 순서나 관계를 오해하지 않도록 도와줍니다.
to_categorical
파이썬의 Keras 라이브러리에서 제공되는 함수로, 정수형 클래스 레이블을 벡터로 변환해주는 함수입니다.
이 함수를 사용하면 간단하게 레이블을 원 핫 인코딩 형태로 바꿀 수 있습니다.
예를 들어, 클래스 레이블 [0, 1, 2, 3]입력은 [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]로 변환할 수 있습니다.
마치며...
밑바닥부터 시작하는 딥러닝, 모두의 딥러닝
두 책을 추천해주셨어요. 바로 주문해서 읽고 있습니다.
엄청 어렵습니다. 완벽하게 이론적 이해를 하기 보다는.. 어떻게 잘 끌어쓰느냐에 집중하게 됩니다.
(이론까지 알 깜냥이면 대학원가고 AI엔지니어를 꿈꿨을거란 그런 마인드로..)
있는 기술 잘 끌어다가 잘 쓰고, DB에 잘 넣고 빼고, 어떤 입출력을 기반으로 하는지 등을 중심으로 보고 있습니다.
화이팅. 한 주가 끝났습니다.