일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 리뷰
- 영화추천시스템
- 멋쟁이사자처럼 k-digital
- k 디지털 후기
- 멋쟁이사자처럼 전액국비지원
- 유니오르
- 멋사 AI
- 인터뷰
- til
- 비전공자 멋쟁이사자처럼
- AI 국비지원
- 멋사 AI 교육
- 인생책짧은글
- 멋사 전액국비지원교육
- 인생책
- 홍명희 임꺽정
- 문학동네
- 민음사
- 비전공자 코딩교육
- 이렇게 그녀를 잃었다
- 멋사 k 디지털
- 가브리엘마르케스
- 멋쟁이사자처럼 k 디지털
- 비전공자 코딩
- 추천프로젝트
- 멋사 국비지원과정
- AI 코딩
- k 디지털
- 멋쟁이사자처럼
- 영화AI추천
- Today
- Total
글쟁이, 코딩한다
0119 / k_digital 30일차 / 딥러닝 이론 본문
0.
딱 맞춰 30일에, 딥러닝 시작한 기념으루다가 이미지도 챙겨봤다.
오늘 배운 내용을 내가 보기 좋게 정리한다. 아무것도 모르던 사람의 딥러닝 1일차라는 것을 유념하며 정확하지 않은 내용, 이해가 빈약한 내용, 틀린 내용은 꾸준히 수정하며 채워가기로 한다.
딥러닝
쉽게 보자면, 인공신경망 기반 머신러닝.
1. 딥러닝, 어떻게 잘 나가게 됐지?
딥러닝의 기본 단위 퍼셉트론은 1958년 즈음 나온 논의
여러 문제들 덕에 빛을 못 보다가 마침내 해답들이 나와 어디 내놓아도 부끄럽지 않을 핵심 기술이 됐다고 한다.
도움 준 친구들
- 데이터 : 저장매체, 통신매체의 발전 -> 학습시킬 데이터 수가 많아졌다
- 하드웨어 : 컴퓨터 하드웨어 발전 -> 연산이 빨라졌다
- 머신러닝 : 머신러닝 연구들의 발전 -> Gredient descent 함정 탈출 등 전반적 AI 연구가 나아갔다
딥러닝은 비정형 데이터 분석하기, 다수 데이터 분석하기 등 가진 장점들이 바뀐 데이터 시장에서 큰 힘을 발휘한다.
특징들
# 딥러닝은 데이터만으로 예측하도록 학습한다. End-to-end. 데이터만 바라보기에 데이터에 대한 사람들의 선입견을 걷어내준다.
# 대강 적용할 때는 오히려 딥러닝이 ML보다 더 편하다. (데이터 전처리를 일정 부분 생략하도록 도와주기에) 다만, 성능을 개선해나갈때 하안참 더 힘들다
# 딥러닝은 특히 비정형데이터 학습에 굉장히 유리하다.
# 반면 수가 그리 많지 않은 정형 데이터는 ML이 더 좋은 성능을 보여주기도 한다(하지만 TabNet?).
# 열 중요도 등을 통해 예측 모델 판단의 과정을 설명하기에도 ML이 낫다.
# 데이터에 정답이 있어야 한다는 것두 단점 # 데이터 라벨링
2. 딥러닝, 어떻게 굴러가지?
구조
모델은 앞선 '층(layer)'의 퍼셉트론들에서 받은 숫자 데이터를 두 가지 연산을 거쳐 숫자 하나를 만들어낸다.
-> 이걸 다음 '층'의 퍼셉트론에 뿌린다.
1) input layer 데이터를 받아들이는 층
2) hidden layer(은닉층) 연산을 진행하는 모든 층 ; Learnable kernels
3) output layer 최종 output을 내보내는 층
layer를 이어주는 선들은 각각이 parameterθ
#여기서도 주인공은 어디까지나 θ다. 더 좋은 θ 값을 얻기 위해 끊임없이 진행하는 거다. # θ = w = weight(가중치)
퍼셉트론 : 뇌속 뉴런에서 아이디어를 얻어온 인공신경망 내 알고리즘 최소 단위
#사실 뇌의 작동방법과 꽤나 다르다고 한다 #연결, 활성화 아이디어를 얻어왔을뿐
input
데이터의 행을 90도로 세워 열을 하나씩 퍼셉트론에 넣어준다.
모든 행과 열은 한 번에 들어간다(output도 한 번에 나온다). 다 행렬 연산.
output
1. 회귀 문제는 output layer의 퍼셉트론이 하나; 예측값
#(껍데기 함수 없이) 결과값 그대로 낸다 #output과 실제 값 사이 에러들을 모아 MSE를 산출한다
2. 분류 문제는 output layer의 퍼셉트론이 분류 카테고리 숫자만큼이다.
1) 이진분류 : sigmoid 함수가 뱉은 y값을 낸다, 사실 결과는 같아서 softmax 쓰기도 한다.
2) 다중 클래스 : softmax 함수 적용, 모델이 내놓은 모든 수를 비율에 따라 모든 값의 합이 1인 수로 변환한다. 이어 라벨을 씌운 데이터=분류값(one-hot label)과 비교해 cross-entropy를 낸다
인공신경망(하나의 퍼셉트론) 안에서 일어나는 두가지 작업
첫번째 작업. 선형결합
이전 층에서 넘어온 데이터(x0, x1, x2, ...)와 θ(가중치)들의 Linear combination(합과 곱 연산). 행렬곱.
y = θ0(bias) + θ1x1 + θ2x2 + ... + θnxn
#a = θ, b(θ0) = bias. 결국 이건 y=ax+b를 찾는 일이다. 이대루 넘긴다면 그저 계산만 조금 더 걸리는 선형회귀(Linear Regression)다. 직선은 한계가 있다. 변수를 모두 담아내지 못한다. 성능을 높이자면 비선형함수(선형이 아닌 모든 것)로 바꿔야 한다.
그래서 하는 두번째 작업. 활성화 함수Activation Functions
선형결합 결과에 비선형함수를 씌우는 일. 다음 층으로 어떤 값을 넘겨줄지 결정한다.
두 작업을 정리하면, 각 퍼셉트론은 데이터마다 가중치를 더한 선형결합 값을 구해 이를 비선형함수로 변환한다. 이렇게 나온 수치 값들은 활성화 여부를 판단할 근거다. 이들은 또다른 x데이터로 가중치를 만나 다음 레이어에 들어간다.
이 친구들의 '학습'은 마지막에서 올바른 결과 값을 활성화할(정답 퍼셉트론의 불을 켜줄) 최적의 θ를 찾기 위한 수치 변환 과정이다.
문제들
1) θ값을 찾기 위해 MSE를 앞층으로 보낼수록, 어라? 값이 의미가 없어지네 : Vanishing Gradient
최적의 θ값을 찾으려면 gredient descent를 돌리기 위한 미분 값(기울기)이 필요하다. 그러나, MSE(오차들의 평균)값을 역방향으로 보내 θ를 수정하려다보면 층이 깊어질수록 앞선 오차 값이 의미없는 값으로 사그라들고는 했다.
뭔 말일까? 사실 나도 아직 잘 모르겠다. 살펴보자.
문제는 선형함수에 씌우는 껍데기 함수들(=활성화 함수)에 있다 ;
첫번째 친구. Step function
비선형함수다. x값이 의미를 지닐 수 있는 y값을 뱉어내도록 변환해줬다.
문제가 생겼다. 이 녀석은 기울기가 다 0이다. MSE 값이 사라져버린다. 너무 깎아질렀다.
두번째 친구. Sigmoid function
미분 값이 안 나오는 깎아지른 step function이 아닌 sigmoid 함수를 사용한다.
값은 0부터 1까지(근사값)다.
세번째 친구. Tanh(Hyperbolic Tangent)
sigmoid와 비슷하나 음수부터 시작한다. (그래프가 미세하게 크다)
다시 문제. sigmoid 함수는 뱉어낼 수 있는 값이 너무 좁다. 가장 큰 미분값이 0.25다. 이렇게 작은 수를 계속 곱하다보니 첫 MSE값이 너무 작은 값으로 사그라든다 => 의미가 없다.
그래서 나온 네번째 친구. ReLU(Rectified Linear Unit)
#선형함수 두개를 이은 비선형함수
#x=0까지는 y=0, 이후부터 y=x다. #미분값은 0 아니면 1
#음수가 들어와 미분값이 0으로 나오면 퍼셉트론이 끊긴다(이를 보완한 건 Leaky ReLU)
#따라서 결과를 낸 퍼셉트론의 기울기는 무조건 1 => MSE값이 무사히 전단계로 돌아간다
#히든레이어에서는 활성화함수로 뭘 쓸까 할 때 웬만하면 ReLU 계열을 쓰면 좋다고 한다.
이렇게 θ값을 찾는 gredient descent 작동을 위해 MSE값을 무사히 돌려보내주는 계산이 오차 역전파 알고리즘(Back Propagation Algorithm). 무지 복잡한 수학 계산이지만, 이미 대가들이 만들어놓아서 쉽게 쓸 수 있다고 한다.
2) 그래서 이 복잡한 구조는 어떻게 만드나요. 레이어 수, 레이어 당 퍼셉트론 수를 몇개로 할까요?
모델을 복잡하게 만든다고 문제가 모두 해결되는 건 아니다. 학습이 무지 더디거나 overfitting이 발생한다.
=> 그래서 전이학습의 혜택을 찾게 된다.
Transfer Learning(전이학습)
최적값을 찾아주는 layer 숫자, 퍼셉트론 숫자, 활성화 함수 등 구조를 통째로 얼려두었다가 해동.
인공신경망을 직접 구축하는 것이 아닌 이미 만들어진 최적화 모델들을 살려내 쓸 수 있다.
3) 만든 모델들, 다 좋은가요? 아니, overfitting
퍼셉트론을 계속 쌓다보면 overfitting이 가장 무섭다고 한다. 신경망에게는 배운 데이터들이 세상의 전부이기 때문에, 이를 정확하게 하기 위해 꾸준히 노력해왔기 때문에, 툭하면 과적합이 일어난다.
DL은 overfitting과 하는 싸움이라고 한다. 보통 트레이닝 데이터를 과할 정도로 overfitting 시켜놓고 점차점차 걷어내는 방식으로 접근한다.
++
아래 사이트에서는 딥러닝 작동을 놀이처럼 확인할 수 있다.
++
인공신경망의 구조, 작동방식을 무지무지 잘 설명해준다. (한글자막제공)
www.youtube.com/watch?v=aircAruvnKk
오늘의 TML
데이터 산업 직군
데이터 사이언티스트에게 필요한 능력들
-도메인 지식(domain knowledge) : 산업에 대한 지식들(적정 질문, 측정 기준, 고객 이해, 비전문가를 위한 해석)
-컴퓨터 사이언스(computer science) : 쉽게 보자면 python 등 언어지식
-수학&통계(mathematics & statistics) : 선형대수와 미적분
데이터 세부 직업들
--데이터 엔지니어 : SQL, DB를 많이 다룬다, 데이터를 잘 다루는 사람들
--머신러닝 엔지니어 : 머신러닝, 딥러닝 모델들을 실제 서비스에 얹는 프로세스
--비즈니스 애널리스트 : 태블로(Tableau) 등을 다룬다. 데이터 기반 시각화 등으로 비즈니스 인사이트를 뽑아준다
--머신러닝 리서처 : 머신러닝, 딥러닝 기술 연구
오늘의 일단 적어두기
model interpretability : 예측값이 왜 나왔는가 설명하기
vs model explainability : 모델에서 배울 수 있었던 것을 알려주기-대상자가 있을 때
데이터 라벨링
책 : 데이터과학자와 엔지니어를 위한 인터뷰 문답집
단기집중수업 : 머신러닝 crash-course
장기수업 : 모두를 위한 머신러닝, 딥러닝, 앤드류 응 교수님 수업
'나는 코딩도 한다 > TIL' 카테고리의 다른 글
0121 / k_digital 32일차 / 딥러닝(TensorFlow실습, 활용사례) (0) | 2021.01.21 |
---|---|
0120 / k_digital 31일차 / 딥러닝 이론 (0) | 2021.01.20 |
0118 / k_digital 29일차 / 미드프로젝트(마무리) (2) | 2021.01.18 |
0115 / k_digital 28일차 / 미드프로젝트 (2) | 2021.01.17 |
0114 / k_digital 27일차 / 미드프로젝트 (0) | 2021.01.14 |