
어제 일이지만 기억이 잘 안난다.. 매일 매일 기록하기를 습관화 하자..
드디어 첫 시작이다! 화이팅!
간단하지만 해야 할 것들이 많아서 헷갈린다. 익숙해지겠지!
10시까지 slack 출석체크 + boostcourse 실명인증 + 학습시작 누르기!
너무 대단한 사람들이 많았다. 우선 이 부스트 캠프의 수장(?)이신 것 같은 Sung Kim님이 직접 들어오셔서 격려의 말씀을 하셨다. 한창 OCR 공부를 하면서 네이버 진짜 대단하다고 느꼈고, 그 대단한 네이버 클로바 연구실의 리더이신 분이 직접 오시다니.. 또한 마스터 분들도 유명한 책을 쓰신 분들이 참 많았다.. 머신러닝, 딥러닝을 공부한 사람이라면 한번쯤 봤을 법한 책, 강의들의 저자 분들이 강의해 주신다는 사실이 참 놀랍기도 하고, 이곳이 대단한 곳임을 느꼈다. (나 포함 ㅎ)
또한 멘토 분들도 대단하신 분들이 많더라.. NLP 프로젝트 할 때 개인이 혼자 한글 버전 bert, electra 학습시켜 배포하신 분을 보며 굉장히 놀라웠는데, 그 분이 여기 멘토로 계셨었다.. 뭔가 연예인 보는 기분?
그리고 다른 캠퍼분들도 slack에 올려주신 자기소개를 읽어보니 모두 정말 멋있고, 훌륭하고, 대단한 사람들이었다.
이런 대단한 사람들이 나의 동료들인 것을 보며 이런 곳에 온 나 자신이 대견스럽기도 하면서, 이런 곳에서 내가 잘 버티고, 커리큘럼을 잘 수행할 수 있을까 걱정이 되기도 했다.
나를 너무 미워하지 말고, 내가 잘한 점을 생각하려 노력하자!
8주간 같이 피어 리뷰를 하고, 프로젝트도 같이 할 동료 peer들을 만났다. 간단히 자기소개를 한 후, 어떤 식으로 피어 리뷰를 진행할지 고민해보았다. 모두들 MBTI가 I___여서 자주 정적이 생기긴 했지만 8주 동안 같이 고생하면 친해지지 않을까?!?!
아무튼 생각보다 나이대도 다양하고, 하던 일도 정말 다양한 사람들이 많이 모였다는 것을 다시 한 번 체감할 수 있었다. 이들과 같이 생활하다 보면 정말 배우는 것도 많을 것 같고 아는 것도 많아질 것 같아 기대가 된다.
그리고 팀명과 간단한 규칙들을 정했다. 팀명은 ICCV인데, 내가 추천했다 ㅎㅎ. 원래는 모두 I여서 I로 시작하는 팀명을 짓고 싶었고, CV트랙이다 보니 I, CV가 들어간 말을 찾다가 불현듯 TOP TIER 학술지인 ICCV가 생각이 났다. 그리하여..
ICCV = Introvert Camper in Computer Vision
= I see, CV!
= 부스트캠프에서 성장하여 ICCV에 논문을 투고할 사람들
이란 뜻의 팀명을 짓게 되었다.
그라운드 룰은 아래와 같이 정했다.
- 3회 무단 불참시 기프티콘 쏘기 (스타벅스 아메리카노 tall )
- 호칭은 OO님으로 부르기
- 출석체크 서로 체크해주기 (9시 50분까지 연락 없으면 전화)
- 월요일에 요일별 모더레이터 사다리 타기로 결정하기
- 월요일에 해당 주차 진도를 요일별로 세분화 해서 피어 세션시 토의할 부분을 정하기
아무튼 기대되는 8주다!
python은 이미 아는 내용이기 때문에 강의 들으면서 새롭게 알게 된 것 위주로 넣을 예정
추후에 채워넣을 예정
전날 늦게 잤더니 아침에 일어나는 게 힘들다.. (10시도 아침으로 쳐주나?)
대충 오늘 하루 무엇을 하고, 어떤 것을 위주로 할 것인지 나눈다.
아무 생각 없이 강의를 듣고 있었는데, peer 한 분이 gradient descent 식 유도를 해보려고 한다고 해서 나도 시도해보기로 했다.
확실히 나 혼자 할 때보다 누군가와 함께 할 때 더 작업의 능률이 늘어나는 듯..?
+ 하루 더 봤다고 뭔가 더 친해진 기분 ㅋㅋㅋㅋㅋㅋㅋ
내일 쓸래..
gradient descent 식 유도 공유,
stochastic gradient descent 강의에서 뭔가 좀 애매했던 부분 나눴음.
Moore-Penrose inverse 애매했던 부분 공유
차후에 있을 프로젝트 주제에 대한 고민 공유
자세한건 나중에 더 쓸래..
다른 팀의 팀원들의 간단한 자기소개와 그라운드 룰, 피어 세션 진행 방법을 공유하는 시간이었다. 사실 그라운드 룰이나 피어 세션 진행 방법이야 다들 비슷했기에 같이 부스트캠프를 참여하고 같이 CV 트랙으로 협력 + 경쟁하게 될 사람들이 누구인지 자기소개를 듣는 재미가 있었다. Day 1에도 적어놨지만 정말 대단한 사람들이 많음을 느꼈다. 학부 인턴은 물론, 논문을 썼던 사람, 다른 부트캠프에서 교육을 듣고, 멘토를 했던 사람 등등 그들의 소개를 직접 들으니 뭔가 더 실감이 나는 기분이었다. 그래도 잊지 말자.. 나도 이들과 똑같은 방법으로 들어왔고, 그만큼 경쟁할 수 있으니까 뽑힌 것을 잊지 말자..
이미 아는 내용이 대다수라 요점 or 까먹을만한 것만 적기
딥러닝에서 확률론이 필요한 이유?
- 딥러닝은 기계학습 (머신러닝) 기반의 이론임
- 기계학습의 손실함수는 데이터 공간을 통계적으로 해석해서 유도함.
- 우리는 분산을 최소화하는 방법을 알아야 함.
- 특히 조건부 확률 + 베이즈 통계와 떼어 놓을 수 없는 관계임. 데이터가 주어졌을 때 결과값을 최대화 시키려는 목적
몬테카를로 샘플링
- 분포를 모를 때 독립추출을 보장하여 sampling을 하여 평균을 취하면 이는 확률이 될 수 있음. 대수의 법칙.
- 아마 경험적 확률과 수학적 확률의 수렴성을 의미하는 것이 아닌가 생각이 듦.
모수 방법론 vs 비모수 방법론
- 분포를 가정하고, 모수를 추정한다면 모수적 방법론
- 분포 가정없이 데이터에 따라 모델의 구조, 모수의 개수가 유연히 바뀌면 비모수 방법론
- 현실 세계에서는 비모수 방법론이 훨씬 많다.
- 확률 분포 가정 시에는 단순 모양, 수치로만 파악하는 것이 아닌 데이터 생성 원리를 고려하는 것이 중요함.
ex) 주사위 던지기는 Multinomial Dist'n 따른다~
CLT
- 표본평균의 표집분포는 N이 커질수록 (> 30) 정규분포 을 따른다.
MLE
- Likelihood (가능도) Probability (확률)
- 가능도는 적분해서 1이 되어야 한다.. 이런 조건이 없음. 그냥 일어날 가능성.. 비슷하지만 헷갈리지 말자!
딥러닝에서 MLE- 예제 : 카테고리 분포에서 분류 문제
- , 는 딥러닝 모델의 가중치.이때 소프트맥스 벡터는 카테고리 분포의 모수 를 모델링함.
- 정답 레이블 일 때 의 MLE는 다음과 같음.
Kullback-Leibler Divergence (KL Divergence)
- 이산확률변수 :
- 연속확률변수 :
- 분류 문제에서 정답레이블을 , 예측레이블을 라 하면 MLE는 KL Divergence를 최소화하는 것과 같음.
베이즈 정리
- : 새로 관찰하는 데이터
- : 모수, hypothesis, 알고자 하는 event
- : posterior, 사후확률. 데이터를 관찰한 이후에 측정하는 확률
- : prior, 사전확률. 데이터가 주어지기 전, 모델링을 하기 전 사전에 주어진 확률
- : likelihood, 가능도. 현재 주어진 가정에서 이 데이터가 관측될 가능성.
- : evidence. 데이터 전체의 분포
ex. 코로나 발병률이 10%로 알려져 있을 때, 코로나에 실제 걸렸을 때 검진될 확률이 99%, 실제로 걸리지 않았을 때 오검진될 확률이 1% 일 때, 어떤 사람이 질병에 걸렸다고 검진결과가 나왔을 때 정말로 코로나에 감염될 확률은?
- then,
-> 구한 사후확률을 다시 사전확률로써 사용 가능함 = 데이터가 들어올 때마다 정보의 갱신 발생 가능.
-> 인과관계를 해석할 순 없음 (중첩 요인 cofounding factor의 효과를 고려해야 함)
Image Ref: https://www.explorium.ai/wiki/confusion-matrix/
- 정밀도 :
- 민감도 :
아직까지는 어려운 내용이 아니고, 기초 AI 수학이라 질문을 주고 받는 것이 많지는 않았다. 크게는 강의안에서 notation에 관한 질문, 분포들이 너무 많이 나오는데 이것이 다 필요할까 라는 질문이 있었던 것 같다.
그 후에는 그냥 small talk 개념으로 대학원에 대한 생각, 오늘 처음으로 뵙게 될 멘토님과의 시간에서 무엇을 할 지, 같은 팀원 분 중에 SSAFY를 하신 분이 있어서 SSAFY는 어땠는지, 대면 행사를 하면 참여할 예정인지 이런 사소한 잡담을 나눴다.
멘토님과 첫 만남을 가지고 차후의 멘토링을 어떻게 진행할지 논의하는 시간이었다.
멘토님은 부스트캠프 2기를 수료하신 분이었고, 현재 현업에서 AI를 다루시는 분이었다. 그러다 보니 본인이 부스트캠프를 하며 느꼈던 점들, 배운 점들을 가감없이 공유해주시고, 현업에서 AI를 다루면서 그 현업의 상황을 알 수 있어서 좋았다. 아직 처음 만남이고 앞으로 배우고 얘기할 것들이 많은데, 그런 내용들이 기대되고 멘토님과의 좋은 관계를 통해 내가 얻어갈 수 있는 것들을 최대화 해야 겠다.
오늘은 팀원들과 함께 진도를 나가기로 한 통계학, 베이즈 통계학 강의를 다시 들을 생각이다. 어제 듣긴 했지만 오늘 다시 들으면서 놓친 부분은 없는지 확인할 예정이다. 그리고 CNN, RNN 수업을 듣고, 2번째 심화과제가 RNN의 Backprop 과정을 코딩하는 거라 그 심화과제 또한 도전해 볼 생각이다.
MLP의 단점
- input, output layer의 node가 많아질수록 parameter의 수가 급격히 많아짐. 각각의 input node가 모든 output node와 연결되어야 하기 때문에..
- MLP는 input + hidden (n) + output으로 구성되어 있어 그 parameter 수는 더 급격히 많아짐.
반면, CNN은
- 가중치 행렬을 사용하는 것이 아닌 kernel이라는 개념을 사용하여 kernel을 움직이며 연산을 하여 parameter 수가 kernel의 parameter의 수로 고정됨. kernel은 움직여도 변하지 않고 (translation invariant) 국소적임 (local).
kernel의 특징
- 정의역 내에서 움직여도 변하지 않음 (translation invariant)
- 국소적임 (local)
- kernel을 어떻게 설정하는지에 따라 이미지 or 영상의 경계선을 추출할 수도, 흐리게 할 수도, 세로선을 강조 할 수도 있음.
Convolution 연산
- 입력 크기가 , 커널 크기가 , 출력 크기가 일 때,
Convolution 연산의 Backpropagation
- convolution 연산도 선형연산이다.
- 편미분 값 또한 convolution 연산임. = backprop도 convolution 연산으로 진행됨.
Sequence Data
- Sequence Data는 iid 가정을 위배하기 쉬움. data의 순서가 매우 중요함.
-
RNN의 특징
- RNN은 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요함. t 시점에서와 t+1시점에서의 과거의 데이터의 수가 다르기 때문.
- 수식적으로는 과거의 모든 데이터를 이용해 현재의 데이터를 구하지만, 실제로는 모든 데이터를 쓰진 않음. 일정 과거의 데이터만 사용함.
RNN 모델
- 만약 과거 만큼의 데이터만 사용한다면 이는 Autoregressive Model (AR())이라고 부름.
- 다른 방법으로는 바로 이전 정보를 제외한 나머지 정보를 라는 잠재변수로 인코딩하여 사용하는 잠재 AR 모델이 있음. 를 예측하고 싶다면 과 를 사용하는 것.
- 위의 두 방법은 과거의 모든 데이터를 사용하며 고정적인 변수를 사용할 수 있음.
Image Ref: "Audio visual speech recognition with multimodal recurrent neural networks(Feng et al, 2017)"
RNN Backpropagation (BPTT)
- RNN의 역전파는 시간 순으로 순차적으로 계산해야 함.
- , ,
-Sequence의 길이가 길어질 수록 의 부분이 불안정해지기 쉬움. gradient vanishing or exploiding 이 일어나기 쉬움.
Gradient Vanishing or Exploiding의 해결책
- truncated BPTT : 시퀀스의 길이가 길어질 때 일정 부분에서 gradient를 끊고 backpropagation을 진행하는 것
- LSTM : 차후에 배울 예정
- GRU : 차후에 배울 예정
1. 수학 공부의 노하우
Don't understand things, you just get used to them - John Von Neumann
2. 여러 모델들의 수학적 원리를 모두 이해해야 하나?
3. ML 엔지니어는 수학을 어느 정도 알아야 하나?
4. AI 분야에서 학석박 간의 차이
5. 인공지능 분야에서 대학원이 필수인가?
6. 참고할 만한 책 or 논문
7. 그 외 말씀하신 것들
느낀 점
뭔가 막막하다. 정말 무엇을 위해 AI를 하고 싶은 것인지 확실히 정해야 할 것 같은 생각이 막 든다. 그런데 그 부분에 대한 준비가 하나도 안 되어 있어 걱정이 되긴 한다. 이 부스트 캠프를 통해 내가 하고 싶은 것을 찾는 것, 내가 확실히 더 전문성을 갖고 싶고, 흥미를 갖고 있고, 앞으로 연구하고 싶은 분야를 찾는 것을 가장 1차적인 목표로 삼아야 겠다고 느꼈다. 그러기 위해서는 아무래도 논문을 많이 읽고 많은 것을 접하는 것이 중요할 것 같다. 부스트 캠프를 하며 항상 OPEN MIND의 자세를 기억하고 생활해야겠다.
금요일은 과제를 되돌아 보기로 한 날이었다. 사실 일반 과제는 그렇게 어렵지 않았기 때문에 큰 차이는 없었지만, 앞으로 이러한 습관들이 더 좋은 코드를 짤 수 있을 것이라는 확신을 가진다. 회고록을 작성하며 앞으로는 notion을 이용해보기로 했다. 주말에 틀을 조금이라도 짜볼까 생각 중이다.
이번 주 강의를 들으면서는 이미 배웠던 내용이기도 하고, 큰 어려움은 없어서 큰 도움이 되지는 않았지만 조교님들의 상세한 설명을 들으며 앞으로 어려운 것이 있을 때 큰 도움이 될 것이라는 믿음이 생겼다. 부스트 캠프라는 좋은 커뮤니티에서 많은 도움을 얻으며 공부할 수 있다는 것이 큰 복임을 다시 한 번 느꼈고, 이 자원들을 내가 정말 충분히 사용해야겠다는 생각을 했다. 그리고 재미난 사이트들도 몇 개 알게 되고, 읽어볼만한 논문도 얻게 되어 유익한 시간이었다.
Loss Landscape
Visualizing the Loss Landscape of Neural Nets
How Do Vision Transformers Work?
사실 오늘(Day 5)은 크게 한 것은 없다. 강의도 미리 다 들어놨고, 첫 날의 교훈으로 인해 매일매일 회고록을 작성하다 보니 따로 할 것이 많지 않았다. 그래도 한 주를 마무리하는 관점에서 소감을 조금 써보려 한다.
우선 설레기도 하고 걱정도 많이 되었던 한 주였던 것 같다. 아무래도 부스트 캠프 첫 주이다 보니 조금 긴장한 것도 있었고, 다른 사람들의 자기소개, 슬랙에 올라오는 정보들을 보며 이런 사람들과 같이 경쟁하고 공부할 수 있을지에 대한 걱정도 많았고, 워낙 I인 나인지라 온라인에서 이들과 어떻게 더 친해질 수 있을지에 대한 걱정도 많았다. 게다가 학회 모델링 프로젝트도 딱 시간이 겹쳐 있어 정신적으로 신체적으로 조금 부담이었던 한 주였다.
하지만 이런 걱정과 부담과 비례하게 배운 점도 많았고, 부스트 캠프 기간 동안 어떤 마음가짐으로 임해야겠다는 나 스스로의 다짐도 할 수 있었다. 조금 더 적극적으로 사람들과 소통하려 노력하고, 슬랙에서 좀 더 나대고, 열린 마음으로, 적어도 내가 무슨 DOMAIN에서 어떤 공부를 하고 싶은지 생각해보자!
우선 걱정은 내려놓고 주말은 편히 쉬자~ 사우나 가고 싶어~