01장. 딥러닝 한눈에 살펴보기
- 인공지능
- 강 인공지능: 사람처럼 모든 문제에 대해 해결 능력을 갖춘 지능
- 약 인공지능: 특정한 문제에 대해서만 해결 능력을 갖는 인공지능
- 머신러닝: 입력 데이터를 이용해 알지 못하는 변수를 반복적으로 학습해나가면서 예측하는 알고리즘
- 시행착오를 겪으며 성장하는 기술, 기계학습 = 머신러닝
- 딥러닝: 인공 신경망을 사용한 머신러닝 알고리즘
- 지도 학습: 데이터에 정답 데이터를 제공하는 학습 방법
- 비지도 학습: 데이터에 정답 데이터를 제공하지 않는 학습 방법
- 강화 학습: 데이터를 사용하지 않고, 인공지능이 스스로 시행착오를 겪으며 성장하는 학습 방법
- 딥러닝 문제 해결 프로세스
- 문제 정의
- 데이터 수집
- 데이터 가공
- 딥러닝 모델 설계
- 딥러닝 모델 학습
- 성능 평가 순서
- 딥러닝 문제 해결 체크리스트 ★(new)
- 풀어야 할 문제 이해하기
- 정확한 값을 예측하는 회귀 문제인가?
- 입력이 속한 범주를 예측하는 분류 문제인가?
- 데이터 파악하기
- 입력 자료형과 정답 확인하기
- 클래스 간의 불균형은 없는지 확인하기
- 누락된 데이터 혹은 자료형에 맞지 않는 데이터가 포함되어 있는지 확인하기
- 데이터 전처리
- 학습에 필요한 데이터가 부족하다면 데이터 증강하기
- 데이터를 정규화해서 값의 범위 맞추기
- 신경망 설계
- 데이터의 공간 정보가 주요하면 합성곱 적용하기
- 데이터의 순서 정보가 중요하면 RNN 적용하기
- 신경망 학습
- 적합한 손실 함수 찾기
- 가중치 수정을 위한 최적화 정하기
- 신경망의 성능을 평가하기 위한 평가 지표 정하기
- 손실이 무한대로 발산한다면
- 손실 함수 바꿔보기
- 데이터에 이상한 값이 섞여 있는지 확인하기
- 학습률 줄이기
- 손실이 0으로 수렴한다면
- 데이터가 부족하지 않은지 확인하기
- 신경망 크기 줄여보기
- 풀어야 할 문제 이해하기
- 변수 ★(new)
- 독립 변수: 다른 변수의 값을 결정하는 변수(입력값)
- 종속 변수: 독립변수에 의해 값이 결정되는 변수
- 파이썬의 시각화
- 라이브러리: 맷플롯립(matplotlib)
- 서브플롯(subplot): 이미지 비교, 여러 그래프 그리기
- 플롯(plot): 꺾은 선 그래프
- 라이브러리: 맷플롯립(matplotlib)
- 파이토치 vs. 텐서플로 vs. 케라스
- 파이토치(Pytorch) → 페이스북 AI 연구팀이 개발
- 장점: 간단하고 직관적으로 학습 가능, 속도 대비 빠른 최적화 가능
단점: 텐서플로에 비해 사용자층이 얕음, 예제 및 자료를 구하기 힘듦- 시대가 바뀌었다 → 텐서플로보다 훨씬 많은 점유율을 보이는 것을 위 차트를 통해 확인 가능.
- 특징: 동적 계산 그래프 사용 / 클래스 사용을 권고
- 중간에 변수 값을 바꿀 수 있음
- 프로그램의 흐름에 맞춰 그래프가 만들어짐
- 텐서플로(Tensorflow) → Google이 개발
- 장점: 텐서보드(TensorBoard)를 통해서 파라미터 변화 양상이나 DNN의 구조를 알 수 있음
- 단점: 메모리를 효율적으로 사용하지 못함
- 특징: 정적 계산 그래프 사용
- 중간에 변수 값을 바꿀 수 없음
- 미리 그래프의 형태가 정해져 있음
- 케라스(Keras)
- 장점: 배우기 쉽고 모델을 구축하기 쉬움
- 단점: 오류가 발생할 경우 케라스 자체의 문제인지 backend의 문제인지 알 수 없음
- 파이토치(Pytorch) → 페이스북 AI 연구팀이 개발
02장. 인공 신경망 ANN 이해하기
- 인공 뉴런(퍼셉트론): 입력값과 가중치, 편향을 이용해 출력값을 내는 수학적 모델
- 단층 인공 신경망: 퍼셉트론을 하나만 사용하는 인공 신경망
- 다층 인공 신경망: 퍼셉트론을 여러 개 사용하는 인공 신경망
- 층(layer)
- 입력층: 입력값을 표현
- 출력층: 신경망의 출력을 계산
- 은닉층: 입력층 이후부터 출력층 전까지
- 가중치: 입력의 중요도
- 편향: 활성화의 경계가 원점으로부터 얼마나 이동할지를 결정
- 활성화 함수: 해당 뉴런의 출력을 다음 뉴런으로 넘길지 결정
- 시그모이드 함수: 뉴런의 출력값을 0~1 사이로 고정 > 이진 분류
- ReLU(Rectified Linear Unit) 함수: 기울기 소실 문제 해결 > 은닉층 활성화
- 소프트맥스 함수 > 다중분류
- 손실 함수 = 오차 함수
- 정답과 신경망의 예측의 차이를 나타내는 함수
- 오차를 구하는 함수
- 대표적인 손실 함수
- 평균 제곱 오차(Mean Squared Error, MSE) > 회귀
- 크로스 엔트로피 오차(Cross Entropy Error, CE) > 이진분류, 다중분류
- 평균 절대 오차(Mean Average Error, MAE) > 회귀
- 평균 제곱근 오차(Root Mean Squared Error, RMSE) > 회귀
- 경사 하강법(gradient descent)
- 손실을 가중치에 대해 미분한 다음, 기울기의 반대 방향으로 학습률만큼 이동시키는 알고리즘
- 기울기의 반대 방향으로 이동하는 알고리즘이므로, 기울기값(미분한 결과)을 빼준다.
- 손실을 줄이기 위해서 사용
- 손실을 가중치에 대해 미분한 다음, 기울기의 반대 방향으로 학습률만큼 이동시키는 알고리즘
- 순전파(propagation)
- 데이터가 입력층으로부터 출력층까지 순서대로 전달되는 것
- 오차 역전파(error backpropagation)
- 올바른 가중치를 찾기 위해 오차를 출력층으로부터 입력층까지 전파하는 방식
- 오버 피팅 = 과적합
- 학습에 사용한 데이터에 최적화되게 학습되어서 다른 데이터에 대한 예측 성능이 떨어지는 경우
- 기울기 소실
- 출력층으로부터 멀어질수록 역전파되는 오차가 0에 가까워지는 현상
학습 소감
‘나 혼자 공부하는 머신러닝+딥러닝’ 학습 이후, 딥러닝에 대한 심화 학습차 이 책을 선택하게 되었다. 앞서 언급한 책은 딥러닝 학습 간 keras, tensorflow 프레임워크를 기반으로 진행한다. 하지만, 2024년에는 시대가 변화하여 pytorch가 강세를 보이고 있다. 따라서, 이번 책을 통해 그 동안 학습한 인공지능에 대한 복습과 함께 Pytorch를 이용한 인공지능 모델 학습 방법을 배워보고자 한다. 출판사가 다른 만큼 인공지능을 새롭게 배우는 느낌을 받았다. 학습 목표 > 학습 순서 > 핵심 용어 미리보기 구성은 확실히 처음 보는 용어가 많은 인공지능 학습에 있어 아주 효과적이었다. 그리고 실습 예제 소개에서는 마치 이것은 소프트웨어 개발 기획서를 보는 것처럼 표로 일목요연하게 정리해주셔서, 실습 문제를 해석하는데 한결 편했다.
* 위 내용은 'Must Have 텐초의 파이토치 딥러닝 특강' 읽고, 공부한 내용을 정리한 것입니다.
참고자료
딥러닝 프레임워크 비교(텐서플로 VS 케라스 VS 파이토치) : 표로 한눈에!
딥러닝 프레임워크 ‘3파전’··· '텐서플로우 vs 파이토치 vs JAX' 비교
TensorFlow 와 PyTorch 중 무엇을 써야할까?
https://www.knowledgehut.com/blog/data-science/pytorch-vs-tensorflow#what-is%20tensorflow?
Papers with Code - Papers With Code : Trends
반응형
'코딩 | 개념 정리 > Machine Learning & Deep Learning' 카테고리의 다른 글
[혼공머신] 번외주차_텍스트를 위한 인공 신경망 (0) | 2024.02.24 |
---|---|
[혼공머신] 혼공학습단 11기_학습 회고 (0) | 2024.02.18 |
[혼공머신] 번외주차_이미지를 위한 인공 신경망 (0) | 2024.02.17 |
[혼공머신] 6주차_딥러닝을 시작합니다. (0) | 2024.02.11 |
[혼공머신] 5주차_비지도 학습 (0) | 2024.02.03 |