contents
- 딥러닝 개요
- 딥러닝의 활용 예시
- 총정리
summary
- 딥러닝 개요
- 딥러닝 이론
☑️ 머신러닝 vs 딥러닝
:머신러닝과 딥러닝은 내부 구조와 활용범위가 다를 뿐 기본적인 흐름은 같다.다만, 딥러닝은 자연어처리와 이미지 처리에 뛰어난 발전을 이룸.

- 공통점: 데이터로부터 가중치를 학습하여 패턴을 인식하고 결정을 내리는 알고리즘 개발과 관련된 인공지능(AI)의 하위 분야
- 차이점
- 머신러닝: 데이터 안의 통계적 관계를 찾아내며 예측이나 부류를 하는 방법
- 딥러닝: 머신러닝의 한 분야로 신경세포 구조를 모방한 인공 신경망을 사용함.
☑️ 딥러닝의 유래
- 인공 신경망(Artificial Neural Networks)
- 인간의 신경세포를 모방하여 만든 망(Networks)
- 신경세포: 이전 신경세포로 들어오는 자극을 이후 신경세포로 전기신호로 전달하는 기능을 하는 세포

- 퍼셉트론(Perceptron): 인공 신경망의 가장 작은 단위
예시:
- 선형회귀식
Y^=w0+w1X
Y=w0+w1X+b
- 몸무게와 키 데이터
- Y: 키
- X: 몸무게
- w0: 100 로 임의로 설정
- w1: 1 로 임의로 설정
- b(편향, bias): 실제 Y값 - 예측 Y

- 키-몸무게 데이터에 대한 퍼셉트론

☑️ 가중치를 구해라 - Gradient Descent
- 늦은 밤 산을 하산하는 가장 쉬운 방법은?
- A) 밑으로 밑으로 향하면 된다.

- 회귀 문제에서 최소화 하려는 값은?
- Mean Squared Error(MSE): 에러을 제곱한 총합의 평균
- 즉, 가중치(weight)를 이리 저리 움직이면서 최소의 MSE를 도출해내면 된다.
- 이렇게 최소화하려는 값을 목적 함수 혹은 손실 함수(cost function)이라고 명명
xi+1=xi−α∗∇f(x)α:step size∇f(x): 기울기 📌경사 하강법(Gradient Descent)은 모델의 손실 함수를 최소화하기 위해 모델의 가중치를 반복적으로 조정하는 최적화 알고리즘이며, weight를 찾기 위한 직관적이고 빠른 계산 방법. 변수 X가 여러 개 있다면 동시에 여러 개의 값을 조정하면서 최소의 값을 찾으면 된다.
경사하강법에는 배치 경사하강법, 확률적 경사하강법 등 다양한 알고리즘이 개발 되었다.
☑️ 활성화 함수의 등장
;위의 예시는 키라는 수치형 변수였지만, 타이타닉 문제에서 사망,생존과 같은 비선형적분류를 만들기 위해 활성화 함수(Acitvation Fucntion)을 사용하게 되었다. 로지스틱회귀 때 배웠던 로지스틱 함수 역시 활성화 함수의 한 예!
- 활성화 함수를 적용한 분류 도식화

- 로지스틱 함수(시그모이드 함수의 한 예) 외에도 다양한 활성화 함수가 존재

☑️ 히든 레이어의 등장
:데이터를 비선형적으로 변환함과 동시에 데이터의 고차원적 특성(ex 이미지, 자연어)을 학습하기 위해 중간에 입력과 결과 외의 추가하게 되는 숨은 층(Hidden Layer)의 개념이 등장.

;하지만, 히든 레이어를 추가할 수록 더 좋은 모델이 나올 줄 알았으나, 실제로는 기울기 소실이라는 문제가 발생한다.
- 인공 신경망의 학습
- 입력 데이터가 신경망의 각 층을 통과하면서 최종 출력까지 생성되는 과정을 순전파(Propagation)
- 신경망의 오류를 역방향으로 전파하여 각 층의 가중치를 조절하는 과정을 역전파(Backpropagation)
- 기울기 소실 문제 등장
- 문제: 역전파 과정에서 하위 레이어로 갈수록 오차의 기울기가 점점 작아져 가중치가 거의 업데이트 되지 않는 현상
- 해결: 특정 활성화 함수(ex Relu)를 통해 완화 하게 됨

- 각 명칭에 대한 정리
- Input Layer: 주어진 데이터가 벡터(Vector)의 형태로 입력됨
- Hidden Layer: Input Layer와 Output Layer를 매개하는 레이어로 이를 통해 비선형 문제를 해결할 수 있게 됨
- Output Layer: 최종적으로 도착하게 되는 Layer
- Activation function(활성화 함수): 인공신경망의 비선형성을 추가하며 기울기 소실 문제 해결함
☑️ 복습은 도움이 된다 - epoch
- epoch: 전체 데이터가 신경망을 통과하는 한 번의 사이클
- 1000 epoch: 데이터 전체를 1000번 학습
- batch: 전체 훈련 데이터 셋을 일정한 크기의 소 그룹으로 나눈 것
- iteration: 전체 훈련 데이터 셋을 여러 개(=batch)로 나누었을 때 배치가 학습되는 횟수

Epoch=batch ∗iteration ex) 1000개의 데이터 batch size 100개라면, 1 epoch에는 iteration은 10번 일어나며 가중치 업데이트도 10번 진행
➕실습
- 딥러닝 패키지

- Tensorflow: 구글이 오픈소스로 공개한 기계학습 라이브러리로 2.0 버전부터는 딥러닝 라이브러리를 구축하는 Keras 패키지를 통합하게 되었다.

- Pytorch: 메타(전 페이스북)의에 개발되었다. 토치(torch)기반의 딥러닝 라이브러리
☑️ Tensorflow 패키지 이해
- tensorflow.keras.model 함수 링크
tensorflow.keras.model.Sequential
model.add
: 모델에 대한 새로운 층을 추가함
model.compile
: 모델 구조를 컴파일하며 학습 과정을 설정
optimizer
: 최적화 방법, Gradient Descent 종류 선택
loss
: 학습 중 손실 함수 설정
- 회귀: mean_squared_error(회귀)
- 분류: categorical_crossentropy
metrics
: 평가척도
mse
: Mean Squared Error
acc
: 정확도
f1_score
: f1 score
model.fit
: 모델을 훈련 시키는 과정
epochs
: 전체 훈련 데이터 셋에 대해 학습을 반복하는 횟수
model.summary()
: 모델의 구조를 요약하여 출력
tensorflow.keras.model.Dense
: 완전 연결된 층
unit
: 층에 있는 유닛의 수. 출력에 대한 차원 개수
input_shape
:1번째 층에만 필요하면 입력데이터의 형태를 지정
model.evaluate
: 테스트 데이터를 사용하여 평가
model.predict
: 새로운 데이터에 대해서 예측 수행
-하나만 넣어서 딥러닝하기

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
from sklearn.preprocessing import StandardScaler
weights = np.array([87,81,82,92,90,61,86,66,69,69])
heights = np.array([187,174,179,192,188,160,179,168,168,174])
model = Sequential()
dense_layser = Dense(units= 1, input_shape=[1])
model.add(dense_layser)
model.compile(optimizer='adam', loss = 'mean_squared_error')
model.summary()
model.fit(weights, heights, epochs = 100)

- 여러개 넣어서 만들기

model2 = Sequential()
model2.add(Dense(units=64, activation = 'relu', input_shape = [1]))
model2.add(Dense(units=64, activation = 'relu'))
model.add(Dense(units= 1))
model2.compile(optimizer='adam', loss = 'mean_squared_error')
model2.summary()
model2.fit(weights, heights, epochs = 100, batch_size= 10 )

- 딥러닝의 활용 예시
-
딥러닝의 예시 - 자연어처리
☑️ 가장 간단한 자연어처리
-
자연어처리(Natural Language Processing) 개념
- 인간의 언어를 데이터 화 하는 것
Ex) 단어의 빈도 수 기반 데이터 화(Bag of Words)

;언어라는 특성 상 문맥의 고려가 필수적인데, 위 방식은 문맥을 고려하지 않아서 인공 신경망의 발전을 토대로모델이 개발되었다. 이 모델들이 현재 OPEN AI의 ChatGPT 서비스의 연장선에 있는 것이다.

☑️ 최신 자연어 처리 모델 - LLM
:최근에는 빅테크들이 각자의 LLM(Large Language ModeL)을 개발해서 서비스화 하는 중
-
LLM의 종류
- GPT-4(OpenAI), PaLM2(Google), LlaMA(Meta)

-
딥러닝의 예시 - 이미지
:이미지는 색깔이 이미 데이터이기 때문에 합성 곱 연산을 통해 딥러닝 모델에 학습하고 이미지를 생성하는 방식으로 발전해왔다.
☑️ 이미지는 원래 데이터 기반
- 이미지도 RGB 256개의 데이터로 이루어진 데이터의 집합
- 3차원 데이터를 모델에 학습 시킴
- ex) 숫자 2를 예측하는 딥러닝의 구조

ex) 합성 곱(CNN) 연산의 예시 
☑️ 최신 이미지 생성 딥러닝
:최근의 이미지 모델의 특징은 단순히 이미지를 입력 받는 것을 넘어서 텍스트, 이미지, 음성 등 다양한 유형의 데이터를 함께 사용하는 Mutimodal의 시대가 도래했다. 특히 Stable Diffusion은 커뮤니티가 발달해 쉽게 설치할 수 있어 접근성도 매우 뛰어나다.
- Stable Diffusion(2022)
- 2022년에 발표된 text-to-image Mutimodal 이미지모델

- 총정리
- 한 줄 요약
1) 머신러닝의 기초
- 머신러닝의 기본, 개념
2) 회귀분석
- 가장 설명을 잘하는 직선을 그리는 법 - 선형회귀
- 실제 값과 예측 값의 오차를 계산하라 - Mean Squared Error
3) 분류분석
- 특정 범주에 대한 확률 예측하기 - 로지스틱회귀
- 맞춘 것에 대한 지표: 정확도, f1_score
4) 데이터 분석 프로세스
- 데이터 수집 → 전처리 → 모델링 → 평가
5) 회귀, 분류 모델링 심화
- 의사결정을 기반으로 한 모델 - 의사결정나무
- 나무를 여러 개 만들어서 다수결 원칙을 사용하자 - 랜덤포레스트
- 유유사종의 원리로 예측하자 - KNN
- 약한 학습기를 여러 개 합치자 - 부스팅 모델
6) 비지도학습
- 만약 Y(정답이 없다면) 특성을 이용해 그룹화 하자 - K-means 군집화
7) 인공 신경망
- 사람의 신경세포를 모방한 네트워크 - 인공 신경망
- 데이터 직군별 머신러닝 활용 방안
- Data Engineer
- 역할
- 데이터 Extract(추출), transform(변환), Load(적재) 및 데이터 파이프라인 관리
- Workflow 과정 자동화
- ML/DL 활용 낮음
- Machine Learning Engineer
- 역할
- 데이터를 기반으로 모델 최적화
- 개발한 모델을 실제 운영에 배포, 성능 평가, 유지 보수
- ML/DL 활용 필수
- AI Researcher
- 역할
- 머신러닝/딥러닝 모델을 논문을 통해 읽고 구현
- 논문 작성 및 발표
- ML/DL 활용 필수
- Data Analyst
- 역할
- 데이터 분석 및 인사이트 도출
- 보고서 작성 및 데이터 시각화 ex) A/B test, 유저분석을 통해서 PM/PO/대표를 보고&설득
- ML/DL 활용 중간: 고객 세분화(클러스터링), 고객 이탈 분석(판매량 예측), 텍스트 분석(자연어 처리를 이용한 리뷰 분석)
insight
딥러닝을 활용한 포폴을 만든다면, 우선 예제 데이터를 활용해서 무언가를 만드는것은 좋은 방법이 아니다!
예제를 위해 만들어진 데이터이기 때문에 회사에서 그 결과를 보고 개인의 능력을 판단하기 어렵기 때문에 좋은 인상을 주지 못할 수 있다. 그렇기 때문에 실제데이터를 가지고 연습하거나 포폴을 만드는것이 가장 좋은 방법이다.
추가적으로 딥러닝이 데이터 분석에 필수 일까에 대해 조사를 진행해보았다.
- 딥러닝이 필수가 아닌 이유
- 일반적인 데이터 분석: 데이터 시각화, 통계 분석, 데이터 전처리, 머신러닝을 통한 예측 모델링 등이 주를 이루며, 이를 위해 Python의 Pandas, Numpy, Scikit-learn과 같은 라이브러리로도 충분히 경쟁력 있는 분석을 수행할 수 있다.
- 도메인 및 산업: 대부분의 산업 데이터 분석(마케팅, 금융, HR 등)은 선형 회귀, 의사결정 트리, 랜덤포레스트와 같은 비교적 간단한 알고리즘으로도 충분히 인사이트를 도출할 수 있다.
- 딥러닝의 요구 수준: 딥러닝은 주로 이미지 처리, 자연어 처리(NLP), 음성 인식과 같은 고도로 복잡한 데이터 분석 작업에서 요구된다.
- 딥러닝을 배운다면 어떤 점에 초점을 맞춰야 할까?
(1) 데이터의 특성
딥러닝은 대규모, 고차원 데이터에서 유용.
예) 이미지, 텍스트, 음성 데이터 등.
만약 다루는 데이터가 정형 데이터(표 형태)라면 딥러닝보다는 전통적인 머신러닝 기법이 더 적합한 경우가 많다.
(2) 기초 수학 및 개념
딥러닝을 제대로 이해하려면 다음 주제들을 어느 정도 공부해야 한다.
선형대수: 벡터, 행렬 연산
확률과 통계: 정규분포, 최대우도추정
미분과 기울기: 경사하강법 이해
하지만 실무에서는 프레임워크(TensorFlow, PyTorch)로 인해 수학을 깊게 몰라도 되는 경우가 많다.
(3) 실무 중심의 학습
처음부터 수학에 몰두하기보다, 실무 프로젝트를 목표로 공부.
이미지 처리: CNN(합성곱 신경망)
텍스트 분석: RNN, LSTM, Transformer
예제 중심 학습: Kaggle, AI 프로젝트 따라 하기.
-
데이터 분석에서 딥러닝의 주요 활용
- 이미지 데이터 분석
딥러닝 없이 처리하기 어렵.
- 의료 영상 분석, 제조 공정의 결함 탐지 등에서 사용.
관련 모델: CNN(ResNet, EfficientNet 등)
- 자연어 처리(NLP)
- 감정 분석, 고객 리뷰 분석, 챗봇 개발 등에서 사용.
관련 모델: RNN, Transformer(GPT, BERT 등)
- 시계열 데이터
딥러닝이 유용할 수 있지만, LSTM, GRU와 같은 기법은 특정 복잡한 경우를 제외하면 Random Forest나 ARIMA 모델로 대체 가능한 경우도 많다.
-
딥러닝을 배우는 이유와 한계
- 배우는 이유:
자동화와 예측 정확도를 높이기 위해.
비정형 데이터를 처리할 때 필수적.
- 한계:
많은 데이터와 높은 계산 자원이 필요.
해석 가능성이 낮아 설명력이 중요한 프로젝트에서는 부적합.
-
결론
딥러닝은 데이터 분석의 필수 조건은 아니지만, 특정 고도화된 분석 문제를 해결하기 위해 유용한 도구. 만약 배워야 한다면, 실무 활용 가능성이 높은 영역(이미지, 텍스트)을 중심으로 실습 위주의 학습을 진행하는것이 좋다. 다만, 딥러닝 외에도 전통적인 데이터 분석 기법과 통계 지식을 탄탄히 쌓는 것이 우선이라는 것을 잊지 말기!