11월 5주차 (처음하는 그룹 스터디!)

우당탕탕 부트캠프 본 과정을 따라가던 중

부트캠프에서 컴퓨터 비전에 관심이 있는 사람들끼리 스터디그룹을 만들게 되었다!!

학부생 때에도 해보지 않은 스터디그룹... 얼떨결에 그룹장을 맡게 되었는데 갈길이 멀다...

 

 

남들은 다 잘 따라가는데 혼자 뒤쳐지는 기분...

 

 

대학원을 휴학하고 왔는데 보다 큰 산이 첩첩산중으로 있는 상황

 

최근에 머신러닝을 2주가량 강의를 들으며 배웠는데

뭐야 이거.... 왤케 어렵나요....

 

어찌어찌 실강에서 진행한 실습들을 머릿속에 무수한 물음표들(???)과 함께

따라갔지만 아직도 이걸 왜? 쓰는 거죠? 그래서 어떻게?라고 정리가 되지 않은 상태로

컴퓨터 비전 강의를 들으니 정말!! 행복했다!!!! (당연 아님)

 

 

아무튼 이러한 상황속에서 강의를 수강했는데

강의 커리큘럼은 다음과 같다!

 

< 초격차 : 컴퓨터비전 > 커리큘럼
PART 1 컴퓨터비전을 위한 딥러닝 기초 8시간 31분
PART 2 컴퓨터비전 특화 이론과 실습 40시간 9분
PART 3 컴퓨터비전 응용분야 실습 프로젝트 20시간 7분
PART 4 최신 컴퓨터비전 기술과 논문코드 구현 14시간 2분

 

이외에도 부록으로 데이터 사이언스 기초(파이썬, 수학)가 있다.... 각각 8시간, 54시간

 

 

11일 5주차에는 Part 1 부분을 수강하기로 결정하여 학습했는데

크게 나누면 딥러닝개론, CNN(Convolutional Neural Networks) 개론 정도다.

 

 

아니 인공지능은 뭐고, 머신러닝은 또 딥러닝이랑 무슨 상관인데?라고 생각할 수 있다!

그래서 간략하게 설명하면 다음과 같다.

 

 

인공지능 = 인공(Artificial) + 지능(Intelligence)

머신러닝 = 학습(learning)하는 기계(machine)

딥러닝 = 깊은(deep) 신경망 구조의 머신러닝

 

 

머신러닝과 다른 점은 딥러닝은 은닉층의 개수가 많아 깊은? 구조를 가진다는 점

여러 층으로 이루어진 신경망을 통해 데이터의 복잡한 패턴을 학습하고 이해하고

대량의 데이터에서 복잡한 패턴을 찾아내는 데 효과적이라고 한다!

그리고 인간의 두뇌에서 뉴런들이 정보를 처리하고 전달하는 방식을 모방한 것이라고...

(이는 학부생때 살짝 맛보기로 들은 적 있다. 신경망이라고 뒤에 다룬다!)

 

 

지도학습(Supervised Learning)비지도학습(Unsupervised Learning)도 살짝 다뤘지만

본 교육과정에서 배운 내용이므로 pass.. 하기엔 아쉬우니 이것도 살짝만 맛보고 넘어가자

 

 

쉽게 설명하자면

지도학습은 학습데이터(입력)와 그에 대응하는 레이블(정답)이 주어지면

이를 학습하여 새로운 입력에 대한 출력을 예측하는 것!

한마디로 입출력 간의 관계를 학습 후 출력 예측하는 거라 보면 된다.

예를 들면 이미지 분류, 회귀 등이 있겠다.

 

 

비지도학습은 레이블(정답)이 주어지지 않은 입력 데이터만으로 학습하는 것이다.

데이터의 내부 구조, 패턴 등을 발견하거나 데이터 압축 및 표현하는 데 사용한다.

입력데이터의 특징을 찾는 게 중점이며, 데이터의 분포나 유사성에 기반해 데이터를 그룹화한다.

예를 들면 군집화(Clustering 이거 어디서 많이 본...), 차원 축소(Dimensionality Reduction),

생성모델(Generative Models)등이 있다.

 

 

아니 쉽게 알려준다면서 어렵잖아??라고 한다면 맞다.... 더 요약하자면 다음과 같다!

지도학습 = 정답을 알고 있으므로 모델의 성능 평가 & 최적화하는 데 사용

비지도학습 = 데이터의 내재된 특성 파악 & 데이터 전처리하는데 활용

 

 

글을 적다 보니 느낀 건데 고작 (?) 8시간 31분 강의를 들었는데 내용 정리할 게 너무 많다

 

 

이건 거짓말이야... 거짓말!!!

 

 

그러니 최대한 간략하게 "이런 걸 배웠습니다 ^^" 정도로만 적고

추후에 더 보충이 필요한 부분은 공부 정리 카테고리에 작성해 봐야겠다...

 

다른 스터디그룹의 경우에 벌써 강의 수강을 마치고 다른 강의까지 신청했던데

24시간을 분단위로 쪼개서 쓰는 게 확실하다! (진심으로 의심 중)

 

 

다시 간략하게! 작성해 보자....

 

  • 선형 회귀(linear regression)

- 데이터 사이의 선형 관계를 표현하는 방법

-  'Y = aX + b' 형태의 회귀 직선 {a는 기울기, b는 y절편(편향)}

- 비용 함수는 모델의 예측값과 실제값 사이의 차이(오차)를 측정하는 함수로

  선형회귀에서는 주로 평균 제곱 오차(MSE)를 사용

 

 

  • 신경망(neural networks)

- 뇌의 뉴런 작동 방식을 모방한 학습 모델

- 입력 데이터는 선형 변환(가중치 행렬과의 곱셈 및 편향의 덧셈)을 거친 후, 비선형 변환(활성화 함수 적용)을 통해 출력값을 생성

- ex) 'Y = 활성화함수(aX + b)'와 같은 형태

 

 

  • 활성화 함수

- 신경망의 출력을 결정하는 함수(시그모이드, ReLU 등)

- 비선형성을 부여해 복잡한 패턴을 학습할 수 있게 함

 

 

  • 가중치 행렬(weight matrix)

- 입력 데이터에 곱해지는 행렬로, 학습 과정에서 최적화

- 가중치 행렬과 입력 데이터 행렬의 곱은 각 신경망 노드에서의 합성곱을 나타냄

 

 

  • 경사하강법(gradient descent)

- 비용 함수를 최소화하는 파라미터를 찾는 최적화 방법

- 현재 위치에서 비용 함수의 기울기(경사)를 계산하고, 기울기가 가장 작은 방향으로 이동하며 최솟값을 찾음

 

 

  • Optimizer

- 경사하강법을 기반으로 한 최적화 알고리즘

- 종류도 진짜 많다... 이건 알아두면 좋을 것 같아서 설명 길게 해 봄!

'''
1. SGD(Stochastic Gradient Descent)
가장 기본적인 경사하강법
각 반복마다 하나의 훈련 샘플을 무작위로 선택하고 그 샘플에 대한 그래디언트를 계산
계산 속도가 빠르지만, 최적화 과정이 불안정할 수 있음

2. Momentum
SGD에 모멘텀 개념을 추가한 Optimizer
이전 그래디언트의 방향을 기억하며, 이를 통해 진동을 줄이고 수렴 속도를 향상

3. AdaGrad
학습률을 자동으로 조정해주는 Optimizer
각 파라미터에 대해 학습률을 개별적으로 조정
희소한 데이터에 대해 좋은 성능을 보임
하지만 학습 중 학습률이 과도하게 감소하는 경우가 있어 심층 신경망에서는 잘 사용되지 않음

4. RMSProp
AdaGrad의 학습률 감소 문제를 해결한 Optimizer
가장 최근 반복들만 고려하여 학습률을 조정하므로, 심층 신경망에서 더 효과적

5. Adam(Adaptive Moment Estimation)
Momentum과 RMSProp를 결합한 Optimizer
모멘텀 방식을 통해 과거 그래디언트의 지수 평균을 계산하고
RMSProp 방식을 통해 과거 그래디언트 제곱의 지수 평균을 계산
이 두 가지를 결합하여 학습률을 개별적으로 조정하며, 일반적으로 많은 문제에 잘 작동
'''

- 문제의 특성에 따라 적절한 Optimizer 선택하는 게 중요

- 최근엔 Adam 많이 사용한다는데... 케바케로 사용해야 할 듯

 

 

  • 역전파(backpropagation)

- 신경망 학습에서 사용되는 알고리즘

- 출력층에서부터 입력층으로 오차를 전파하며 각 층의 가중치를 업데이트

 

 

  • 소프트맥스(softmax)

- 분류 문제에서 출력층의 활성화 함수로 사용

- 각 클래스에 대한 확률을 반환

 

 

  • 크로스 엔트로피(cross-entropy)

- 분류 문제의 비용 함수

- 모델의 예측 확률 분포와 실제 분포의 차이를 측정

 

 

 

이렇게 정리해 봤는데..

위에 작성한 개념들은 서로 연결되어 딥러닝 모델이 학습 & 예측하는 데 사용된다!!

 

 

예시를 하나 들어보면

 

이미지 분류를 위한 신경망을 학습시키려 할 때

 

이미지 데이터는 신경망을 통해 전달

 

각 층에서는 선형 변환과 활성화 함수를 거치고

 

마지막 층에서는 소프트맥스 함수를 통해 각 클래스에 대한 확률을 얻음!

 

이 확률과 실제 레이블(정답)을 비교하여 크로스 엔트로피 오차를 계산하고

 

이 오차를 최소화하기 위해 역전파와 경사하강법을 사용하여 모델의 가중치를 업데이트

 

이러한 과정을 여러 번 반복하여 모델을 학습시킨다!!!

 

 

 

진짜 소름 돋는 점은 CNN개론에 대한건 아직 다루지도 않았다는 점 ㄷㄷ;

 

글을 이렇게 쓰는 게 맞는지 아니면 너무 TMI인지 아직 잘 모르겠다

 

한 번에 너무 길게 작성하면 가독성도 좋지 않은 것 같고

 

나도 복습용으로 볼 때 이게 뭐니..? 싶을 것 같아서

 

CNN은 2편으로 작성해야 할 것 같다

 

아무래도 그게 맞아... 그 이유는

'''
<CNN 개론>
이미지 필터(filters)
합성곱(convolution) 연산
CNN(convolutional neural networks)
CNN 역전파
CV Task - 이미지 분류(image classification)
CV Task - 객체 검출(object detection)
CV Task - 객체 추적(object tracking)
CV Task - 영역 분할(segmentation)
이미지 전처리(preprocessing)
데이터 불균형(imbalance)
오버피팅(overfitting)
이미지 증강(augmentation)
'''

이렇게 잔뜩 남아있기 때문

 

 

최대한 간략하게 작성해보려 했지만 적으면 적을수록

미니 강의자료 ppt가 되어버리는 느낌이라 여기까지만 적어야겠다.

 

제대로 이해 못 한 나도 이렇게 적을 정도면

제대로 이해하고 궁금한 게 많은 사람들은 어떻게 적는 건가 싶다 (리스펙 합니다...)

 

CNN은 다음 편에 총총...

네...열심히 하겠습니다....아니 할게 왤케 많아?!