
딥러닝이라는게 사실 상용화된게 얼마 되지 않았다.
딥러닝 이전은 머신러닝이 활발했을 당시에는 코드를 공유하는 경우가 별로 없었다.
그러다보니 논문을 보고 재구현 하는 경우가 많았는데 이또한 쉽지 않았다.
딥러닝이 시작되면서 코드가 공유되면서 빠른 속도로 성장할 수 있었다.
요즘 딥러닝에서 가장 많이 쓰이는 라이브러리는 구글의 TensorFlow랑 Meta의 PyToch라는 것을 많이 쓰고 있다.
이 라이브러리의 장점은
레고를 조합하며 사용할 수 있듯이 딥러닝을 쉽게 시작할 수 있다는 진입장벽이 낮다.
쉽지는 않지만 할 수 있다는 거!
“an algorithm that is able to learn from data”
학습(learning)이라는 것은?
task? 분류하는 것, 예측하는 것, 수치를 만들어 내는 것, 생성하는 것.
분류한다고 하면 이메일의 메일 중 스팸인지 일반 메일인지 구분하는 것,
특정 진단서를 보면 당뇨인지 아닌지 구분하는 것,
실수 보다는 범주로 구분한다.

예측한다는 것은 분류와는 다르게 실수, 진짜 수치로 예측 한다.
실수값 자체로 예측을 한다.

The Performance Measure
classification에서는 정확도 Performance Measure로 쓰인다.
regression는 error. 오차는 작을 수록 좋다.
“obtain knowledge from experiences
to improve the performance in the task”
generalization, not memorization

model에서 학습을 시킨다.
model을 함수라고 생각하면 좋다. x를 대입하면 y이라는 출력값.
함수 자체를 표현해주는 것은 model parameter이다.
Performance Measure라는 오차는 작을수록, 정확도는 높을수록 좋다.
model이라는 것은 뉴런 네트워크라는 구조로 정의되어 있다.
경험이라는 데이터셋이 크다는 가정이 있다.
이 딥러닝에서의 모델 학습은 gradient descent 이라는 방법론으로 학습을 진행한다.
Model : Neural Networks

regression로 한다고 하면 real value라는 아웃풋으로 나온다.
binary classification라고 하면 0 or 1 중 하나가 나올 확률값으로 나온다 ( 결과가 1일 확률은? )
위의 이미지는 레이어가 3개가 있는데 이 수치를 Depth라고 부른다.
하나의 레이어에는 하나의 뉴런(초록색 원)이라고 하는데 이 중간의 값을 우리는 절대 알 수 없다.
그래서 이걸 Hidden layers (unit) 라고 부른다.
여기에 있는 레이어의 개수, 뉴런의 개수를 우리가 필요에 따라 자유롭게 구현할 수 있다.
1. input unit에 각각 가중치를 곱하고 더해준다. = linear mapping
-> 하나의 형태로 변환시켜 주는 과정 (선형의 형태)
2. activation (non-linear) : 이 함수를 거치면 비선형으로 바꿔준다.
3. 이 과정을 거친 후 최종 하나의 unit이 나오게 된다.
이런 방법 말고도 input unit를 벡터로도 표현할 수 있다.

이런식으로 벡터 여러개들로 하나의 메트릭스로도 표현할 수 있다.
하나의 레이어는 weight matrix 형태로 표현 가능!

PyToch를 쓰게 되면 이런식이다.
위의 개념들과 마찬가지로 linear mapping를 넣어주고 in으로 몇개의 값을 가져올건지 몇개의 output을 내보낼 것인지 정할 수 있다.
regression에서는 real value이기때문에 액티베이션이 필요하지 않다.

각각의 레이어는 이렇게 구성된다.
각 레이어들이 순차적으로 수행하고 Sequential이라는 함수로 레이어들을 연결해준다.
어렵다,,,,,,
'Artificial Intelligence' 카테고리의 다른 글
| 뉴런 네트워크 (0) | 2024.07.06 |
|---|---|
| 데이터 라벨링 (0) | 2024.07.05 |
| 데이터 사이언스 (0) | 2024.07.05 |