인공지능 = 인공(Artificial) + 지능(Intelligence)
머신러닝 = 학습하는 기계(Decision tree, svm)
*svm: 서포트 벡터가 어떤 직선을 만들때 그 직선에서 수직거리가 가까운 포인트를 서포트 벡터라고 하는데 두 서포트 벡터 사이의 거리를 마진이라고 하고 마진을 최대화하는 어떤 직선을 찾는 테스크
- 해석력이 좋음
딥러닝 = 깊은 신경망 구조의 머신러닝(신경망)
- 예측력이 좋음
- MLP, CNN(컨볼루션 필터를 사용해서 지역적 특징 추출), RNN(노드가 본인한테 회귀함), Transformer(셀프 어텐션을 사용)
*MLP(완전연결신경망)와 CNN(합성곱 신경망)의 차이는 특징점 추출의 유무
MLP는 이미지 행렬을 1차원 배열로 만들고 신경망에 입력으로 넣어 가중치를 계산해서 정보 손실이 큰 반면,
CNN은 사람이 보는 것 처럼 이미지 행렬 2차원 배열에서 가로, 세로 축 전부 합성곱 연산과 풀링 연산으로
특징점을 추출하기에 정보 손실이 적음
- 학습이란

예측과 정답의 오차를 계산해서 피드백을 모델에 주면 모델이 업데이트함 그러면 모델의 예측력이 높아짐
- 깊은 신경망
- 은닉층 개수가 많아 깊은 구조를 가짐 => 복잡한 특성 추출하고 학습함
- 깊어지면 복잡한 특성을 추출하고 학습할 수 있음
데이터 분할
- 테스트 셋에서 클래스의 임밸런스 문제가 생겼을 때 클래스 테스트셋이 어떤 특정 클래스만 분포하는 문제를 해결하고 싶으면 stratify 층화 추출을 사용
- 클래스 1,2,3이 있으면 1에서 20%, 2에서 20%, 3에서 20%를 추출하겠단 것임

정답(label)
- image classification 이미지당 정답을 가짐
- object detection/segmentation: 픽셀이 차지하는 위치마다 클래스를 줌
ex) yolo = (박스의 중심 x좌표, 박스의 중심 y좌표, 바운딩박스 Width, 바운딩박스 height, class)
coco = (박스의 좌상단 x좌표, 박스의 좌상단 y좌표, 바운딩박스 Width, 바운딩박스 height, class)
voc = (좌상단 x, 좌상단 y, 우하단 x, 우하단 y)
비지도 학습
- lable이 없음
- K-Means Clustering
- 군집화, 중심점을 만들고 중심점 기반으로 클러스터를 만듦
반지도 학습
- 지도학습+비지도학습
- Pseudo(가짜)-labeling: 70퍼센트의 성능이 보장된 모델을 만들고 유사한 데이터 셋을 확보하고 새로운 데이터 셋에대한 예측을 함, confidence까지 추가해서 그 기준을 기반으로 라벨을 사용 유무를 선택함
선형회귀(Linear + Regression)
- 선을 그어 + 값을 예측
1. 데이터를 일반화하는 선을 찾는다
2. 그 선을 이용해 새로운 데이터를 예측한다

바이어스가 왜 필요?
- 뉴런은 입력에 가중치를 곱하고 바이어스를 더하는데 이 연산의 결과가 활성화 함수의 입력이 됨
- 시그모이드 기준으로 바이어스가 없으면 입력과 가중치 곱에만 의존하는데 바이어스를 통해서 활성화 함수 입력이 조정되니까(작동 지점을 이동시키니까) 바이어스 값에따라 활성화 함수가 더 높거나 낮은 값에서 활성화가됨
- 시그모이드는 바이어스가 높으면 출력이 1에 가까워지고 바이어스가 낮으면 0에 가까워짐
선형변환

노드와 노드가 연결된 부분이 다 선형 회귀의 구조를 띄고 있고 이걸 선형 변환이라고 하는데
수많은 선형 변환을 가지고 있음
근데 이게 문제가 되는게 계속 선형 변환이 이루어지면 결국 하나의 선형 변환이 되버림(하나의 레이어로 치환됨)
깊은 신경망을 쌓는 이유가 추출된 수많은 디테일한 특성을 통해서 정확한 예측을 하려고하는데
하나의 레이어를 가진 구조와 동치가되면 깊은 신경망을 쌓는 의미가 사라짐
그러면, 깊이를 유지하면서 선형변환들이 하나의 선형변환으로 치환될 수 없게 하는 방법은 비선형 변환을 추가해주는 것
* 비선형변환
sigmoid

시그모이드는 0에서 1사이의 값을 가지고 threshold에 따라서 1 또는 0의 값을 내뱉음
시그모이드를 통해 수많은 선형 변환들 사이에 비선형 변환을 추가하게 되고 신경망을 깊은 구조로 쌓게 되더라도
선형이 되는것이 아니라 많은 특성을 추출하고 예측하는데 문제가 없게 됨
그리고 시그모이드는 출력 값이 중앙값이 0이 아닌 0.5이며, 모두 양수기 때문에 출력의 가중치 합이 입력의 가중치 합보다 커짐 (편향 이동), 신호가 각레이어를 통과할 때마다 분산이 계속 커지게 되어, 활성화 함수의 출력이 최댓값과 최솟값인 0과 1에 수렴
위의 이유때문에 뉴런의 기울기(Grandient) 값이 0이 되고, 역전파 시 0이 곱해져서 기울기 소실(Gradient vanishing)
(역전파가 진행될수록 아래층에 아무런 신호가 전달되지 않음)이 일어나서 학습이 잘 안됨
그래서, 은닉층에는 선형함수와 시그모이드(Sigmoid)함수를 사용하지 않는게 좋다
가중치 행렬
- 바이어스 연산

위의 이미지처럼 왼쪽 행렬에 1,1을 추가하고 오른쪽에 b1, b2를 추가해서 곱한다음 더해주면
결국 가중치 행렬곱에 바이어스를 더하게 되는것과 같음
가중치 행렬에 행 추가

- 데이터에서 데이터 포인트가 늘어나면(행이 추가되면) 가중치 개수는 고정되어있어서 노드 갯수는 동일하지만 데이터의 수가 늘었기때문에 행이 늘어나는 것임
가중치 행렬에 열 추가

가중치에서 열이 늘어난다는게 노드가 추가되는 것이고 행렬곱 연산 결과에서 열이 늘어나는 결과를 가짐
비용함수
- 모델이 신경망을 통해서 예측을 했을 때 실제 정답과의 비교를 통해 그 차이(=오차)를 계산해서 모델을 업데이트(=가중치를 업데이트)를 학습이라고 함
- 비용함수 최적값(여기선 최소값)을 찾는데 비용함수는 볼록함수 모양(컨벡스)을 띄고 있어서 최소값을 구하는 문제로 볼 수 있음

오른쪽에 있는 w를 최적w로 이동시킴
비용 함수를 통해 가중치를 업데이트

Gradient Descent
비용 함수의 비용값을 최소화하는 파라미터를 찾는 경사 하강 알고리즘
임의의 초기값을 잡고 최소가 될 때까지 파라미터 값 갱신을 반복하여 최솟값에 도달했을 때 해당하는 파라미터를 찾아냄
전체 샘플들을 반복적으로 업데이트(수정)
- 기본 개념은 함수의 기울기(approximate gradient)를 구하고 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것.
- Batch GD
- 배치란 데이터 세트 전체의 개수이고 데이터 세트를 한바퀴 돌고나서 가중치에 대한 업데이트가 진행된다가 배치 그래디언트 디센트
Stochasitic Gradient Descent
훈련 셋에서 하나의 샘플만을 반복적으로 업데이트
- 학습 데이터셋에서 무작위로 한 개의 샘플 데이터 셋을 추출하고, 그 샘플에 대해서만 기울기를 계산하는 것이 특징.
- Mini batch GD/ single sample GD
- Mini batch GD : 배치를 여러개로 쪼갠다음 그 미니배치에 에러를 구하고 업데이트를 하는것
- single sample GD : 말그대로 하나의 샘플에서 에러 구하고 업데이트를 하는 것

예측값을 확률값으로 변환
- 예측값을 그대로 쓰면? 음수가 나오면 분모에 음수 또는 0이 되기때문에 우리가 원하는 확률값이 나오지 않음
softmax

- 예측값들을 확률값으로 만들어주는데
- 음수였을때 모호하거나 분모가 0인 에러를 해결하기위해서 수식에 자연상수 e를 추가했다
엔트로피(Entropy)
- 불확실성
- 정보량의 기대값
- 정보량이 많으려면 해당 사건이 발생할 확률이 적어야하고 어떤 불확실성
- 정보량의 불확실성을 계산하는 것이 두 분포간에 어떤 차이를 계산할 수 있는 것이고 그것을 통해서 Cost 혹은 loss 함수로 사용될 수 있다는 것
'Study 공부할레나' 카테고리의 다른 글
| [컴퓨터비전 정주행 Kit] Part2 ch02 (1) | 2023.12.18 |
|---|---|
| [컴퓨터비전 정주행 Kit] Part2 ch01 (0) | 2023.12.16 |
| [스터디/밑시딥3] 제 4고지 신경망 만들기_47. 소프트맥스 함수와 교차 엔트로피 오차 (0) | 2023.10.16 |
| [스터디/밑시딥3] 제 4고지 신경망 만들기_46. Optimizer로 수행하는 매개변수 갱신 (0) | 2023.10.15 |
| [스터디/밑시딥3] 제 4고지 신경망 만들기_45. 계층을 모아두는 계층 (1) | 2023.10.14 |