Course overview
딥러닝은 인공지능(시각처리, 청해, 언어이해)의 필수적인 개념이면서, 고성능의 기계학습기 건설을 위한 유용한 방법론이기도 합니다. 본 강좌에서는 통계학/수학 전공지식에 기반하여 딥러닝의 기초 개념들을 소개하고, Python 기반의 PyTorch 라이브러리를 이용하여 신경망들을 구현하여 봅니다. 구체적으로는 주요 신경망 구조인 feed-forward neural networks, convolutional neural networks (CNN), recurrent neural networks (RNN), attention networks, variational autoencoders, generative adversarial networks (GANs), 신경망 훈련 기법인 backpropagation, adam, dropout, BatchNorm, Xavier/He initialization, 그리고 신경망 해석 기법인 feature visualization, adversarial examples 등을 다룹니다.
본 교강사는 본 강좌를 처음 운영합니다. 강의 세부 내용은 학생들의 주요 관심사와 일정에 따라 변경될 수 있습니다.
Overall goals
딥러닝의 주요 개념을 수식과 그림을 이용하여 설명할 수 있다.
PyTorch를 이용하여 주요 딥러닝 학습기를 직접 구현, 훈련하고 테스트할 수 있다.
실생활 문제에 딥러닝 학습기를 적용하여 의미있는 결과물을 낼 수 있다.
요구되는 선수지식 및 경험
필수: 수리통계 2, 회귀분석, 선형대수, 다변수함수 미적분, 통계프로그래밍, Python 활용강좌 아무거나
권장: 다변량자료분석, 데이터마이닝, 기계학습에 대한 관심
Note 1 : 본 과목에서는 딥러닝 기반 기계학습만 다룹니다. 기계학습 기초이론 및 타 기계학습 방법론은 2학기 데이터마이닝 (통계학과) 강좌에서 다룹니다. 본 강의에서는 기계학습 기초이론 선수지식이 없음을 가정할 예정이나, 데이터마이닝 수강경험이 딥러닝의 이해에 도움이 됩니다.
Note 2 : 실습 수업에서는 Numpy 패키지와 PyTorch 패키지의 기초 사용법부터 다룰 예정이며 Python 기초지식은 다루지 않습니다.
Python 경험이 전무한 학생은 기초 (예를들어 오른쪽 링크)를 미리 공부해두지 않을시 수강에 어려움을 겪을 수도 있습니다: https://www.codecademy.com/learn/learn-python
강의 시간 : 화 / 목 오후 4:30 - 6:20
강의실 : 사회교육관 514호 (이론), 510호 (실습)
평가 : 시험 50점 + 프로젝트 40점 + 가산점 슬롯 10점
시험 : 중간과제 25점 + 기말과제 25점 // 이론, 방법론, 코드의 이해와 응용
가산점 슬롯 : 기본 0점 // 타 수강생에게 도움이 되는 행위의 양과 질에 따라 차등 부여 (e.g. 슬랙 질문답변 참여)
프로젝트 : 페이지 하단에 별도 안내
출석 불시 체크, 특히 학생 발표 시간에 미출석시 크게 감점합니다.
효율적 운영을 위하여 다음 플랫폼들을 활용합니다.
이메일 : 중요 공지 배포 (스노우보드 및 포탈에서 본인의 이메일 설정을 다시 확인하세요.)
슬랙(Slack) : 실시간 커뮤니케이션 및 질문답변
슬랙은 실시간 의사소통을 편하게 하는 플랫폼입니다. 여러 줄의 타이핑 및 Code formatting, 이미지 삽입, 파일 첨부가 모두 가능합니다.
혼동되는 개념을 명확히 하고 싶을 때, 개념에 질문이 있을 때, 프로젝트 도중에 막힌 부분이 있을 때에는 #질문답변포럼 게시판에 질문을 남겨주세요. (물론 Office hours도 활용하실 수 있습니다.)
사려깊고 건설적인 참여를 적극적으로 장려합니다. 이를 위하여 합리적인 기준 하에 가산점으로 보상합니다. 교강사는 정기적으로 질문을 체크하고 답변을 남기겠지만 학생들의 답변을 먼저 기다릴 예정입니다.
이메일/DM으로 질문이 올 경우에는 민감한/기밀 질문이 아닌 한 슬랙 질문답변포럼 게시판으로 유도합니다.
스노우보드(Snowboard) : 과제물 수거 (프로젝트 프로포절, 중간결과, 최종결과, 평가지 등)
Zoom meeting join용 ID : 746-487-4094 (비밀번호는 슬랙/이메일로 공지)
연구실 : 사회교육관 503호
e-mail : ygchoi 앳 sm 닷 ac 닷 kr
Office hours (예약자 우선) : 금요일 오후 1:30 - 4:30
예약 방법 : https://ygchoi.youcanbook.me/
온/오프라인 모두 가능 (온라인 면담 희망시 본인의 Zoom ID나 전화번호를 같이 입력할 것)
주교재
2. [CS231n] Lecture notes for Stanford CS231n: Convolutional Neural Networks for Visual Recognition. [원문 / 일부 번역]
Historical note. Johnson은 CS231n의 주요 제작자 중 한명입니다. 2016년 AI Korea Facebook group은 번역 프로젝트를 진행하였습니다.
(원저자의 허가 하에) 원본 슬라이드를 인용, 번역 또는 편집하여 강의노트를 제작합니다.
부교재
1,2주차 [3/17, 19, 24, 26] --- 온라인 강의
2주차 목 [3/26] --- 프로젝트 팀 편성결과 발표
6주차 화 [4/21] 4:30pm --- 프로젝트 프로포절 제출
8주차 토 [5/9] 11:59pm --- 중간고사 대체과제 제출
10주차 금 [5/22] 12:00pm (정오) --- 프로젝트 포스터 및 코드의 마일스톤(중간결과) 제출
13주차 토 [6/13] 11:59pm -- 프로젝트 포스터 및 코드 최종제출 & 기말고사 코딩과제 Freeze
14주차 화,목 [6/11] --- 포스터 발표
15주차 토 [6/27] 11:59pm -- 기말고사 대체과제 제출
프로젝트 관련 기한 엄수 (1일 초과시 25%씩 차감) / Done is better than late
1주차
3/17 화. (Lec1) Introduction [슬라이드(PDF)]
소그룹 토론 세션이 예정되어 있습니다. 마이크를 준비하세요. 참고 : [Breakout session in Zoom]
3/19 목. (Lec2) Image classification, k-NN, training/validation/test datasets [슬라이드(PDF)] [슬라이드+설명(OneNote)] [소그룹 활동]
2주차
3/24 화. (실습1) Introduction to PyTorch [강의자료 ipynb]
참고자료: [유원준 2장]
3/26 목. (Lec3) Linear classifiers, loss function, hinge/logistic losses [슬라이드(PDF)] [슬라이드+설명(OneNote)]
참고자료: [CS231n Linear classifiers (원문)] [ISL 4.3] [ISL 9.2-9.5] [데마 2019-2 로지스틱 회귀 강의노트] [데마 2019-2 SVM 강의노트]
3주차
3/31 화. (Lec4) Optimization [슬라이드(PDF)] [슬라이드+설명(OneNote)]
참고자료: [CS231n Optimization (원문/번역)] [GBC 8.1-8.6]
4/2 목. (Lec5) Neural networks [슬라이드(PDF)] [슬라이드+설명(OneNote)] [영상]
참고자료: [CS231n Neural networks (원문)] [GBC 6.1-6.4] [Nielsen on universal approximation]
4주차
4/9 목. (Lec6) Backpropagation [슬라이드(PDF)] [슬라이드+설명(OneNote)] [영상]
참고자료: [CS231n Backprop (원문/번역)] [Olah on backprop] [Nielsen on backprop]
5주차
4/14 화. (Lec6 continued) [영상]
4/16 목. (실습2a) Linear classifiers [강의자료 ipynb] [영상]
6주차
4/21 화. (실습2b) Two-layer network [강의자료 ipynb] [영상]
4/23 목. (Lec7) Convolutional neural networks (CNNs) [슬라이드(PDF)] [슬라이드+설명(OneNote)] [영상]
4/24 금. 프로젝트 프로포절 면담 (Office hour 활용)
7주차
4/28 화. (Lec7 continued) [영상]
4/30 목. (Lec8) CNN architectures [슬라이드+설명(OneNote)] [영상]
참고자료: [AlexNet] [VGGNet] [GoogLeNet] [ResNet]
휴강 (석가탄신일)로 인하여 녹화강의로 대체
8주차
9주차
10주차
5/19 화. (Lec11) Neural network training techniques II [슬라이드(PDF)] [슬라이드+설명(OneNote)] [영상]
참고자료: [CS231n Training techniques II (원문/번역)] [Karpathy's recipes]
5/21 목. (Lec12) Recurrent neural networks (RNNs) [슬라이드(PDF)] [슬라이드+설명(OneNote)] [영상]
5/22 금 정오 (12:00pm). 프로젝트 포스터 및 코드의 마일스톤(중간결과) 제출
11주차
5/25 화. (Lec12 continued) [영상]
5/27 목. (Lec13) Attention [슬라이드(PDF)] [슬라이드+설명(OneNote)] [영상]
참고자료: [Bloem's "Transformers from Scratch"] [Alammar's "The Illustrated Transformer" (원문/번역)]
12주차
6/2 화. (Lec13 Continued) [영상]
6/4 목. (실습4) RNN, LSTM, and Attention for Image Captioning [강의자료 ipynb] [영상]
참고자료: [유원준 10장-14장]
13주차
14주차
6/16 화. 프로젝트 (포스터) 발표
6/18 목. 프로젝트 (포스터) 발표
15주차
6/23 화, 6/25 목. 수업 없음 (Office Hours 운영)
6/27 토 11:59pm -- 기말고사 대체과제 제출
일러두기 : 모든 프로젝트 운영 정책은 [Stanford CS230 project]를 본보기삼아 구성하였음.
프로젝트 목적 : 문제 발굴, 방법론의 구현, 적용, 협업을 체험해봄으로써 딥러닝의 강점과 실무적 어려움을 체득
프로젝트 범위
데이터셋 제한 : 데이터셋에 image를 반드시 포함할 것
Default datasets (데이터셋 선택이 고민되면 다음을 고려하여 보십시오. 모두 Industrial AI 관련 데이터셋들입니다.)
프로젝트 분야의 선택, 데이터 찾는 방법에 대한 구체적인 팁은 [Stanford CS224n Lecture 9 (특히 슬라이드 15쪽-45쪽)] 참고
기 존재하는 Data competition website (e.g. Kaggle, DACON, UCI machine learning repository, ...)들의 데이터셋을 사용하면 전처리의 부담을 줄일 수 있음. 단, 각 웹사이트에 이미 존재하는 분석보고서(커널)과 비교하여 반드시 차별점이 존재하여야 합니다.
예시 프로젝트들 (링크)
팀 구성
팀 구성 결과 및 팀플 실무에 대한 주관적인 조언들은 [Google Docs]에 업데이트 하겠습니다.
3인 1팀을 원칙으로 하나 2인 1팀도 존재할 수 있음
수강포기기간 후 1명만 남은 조는 다른 조로 편입
프로포절 제출 --- Deadline: 6주차 화 [4/21] 4:30pm, Snowboard 제출
양식 : A4 1장 분량의 줄글, 팀 이름
내용 : 다음을 포함할 것 (출처 : [Stanford CS230 project]의 'Proposal' 탭)
(부과하는 의도는 여러분이 수행하는 프로젝트의 크기와 어려움을 빨리 파악하게 하고 저와 피드백을 주고받는 데 있습니다. 여러분이 아래 물음에 성의있게 대답코자 노력하였고, 합리적인 ---너무 적거나 과하지 않은--- 수행계획을 가지고 있다면 충분합니다.)
What is the problem that you will be investigating? Why is it interesting?
What are the challenges of this project?
What dataset are you using? How do you plan to collect it?
What method or algorithm are you proposing? If there are existing implementations, will you use them and how? How do you plan to improve or modify such implementations?
What reading will you examine to provide context and background? If relevant, what papers do you refer to?
How will you evaluate your results? Qualitatively, what kind of results do you expect (e.g. plots or figures)? Quantitatively, what kind of analysis will you use to evaluate and/or compare your results (e.g. what performance metrics or statistical tests)?
Weekly goals and plans
6주차 Office hour : 팀별 교강사 대화 및 피드백
마일스톤(중간결과) 포스터, 코드 제출 --- Deadline: 10주차 금 [5/22] 12:00pm (정오), Snowboard 제출
제출물 : 포스터, 코드, 회의록 (최종 제출때의 양식과 동일한 양식 사용)
내용 : 최종제출물의 '서투른 초안' 형태. 예를 들어, (출처 : [Stanford CS230 project]의 'Milestone' 탭)
Title, Authors
Introduction: this section introduces your project, why it’s important or interesting.
Make sure to submit your code (a link for google colab notebook).
Details on the dataset
Approach: Describe the current steps you have done. If you are implementing an algorithm, you should have started implementation and ideally have some early stage results. Describe precisely the remaining work you expect to complete. We ideally would like to see a model description and a training strategy (loss function for instance).
한국어/영어 중 택1
최소조건 1 : 위 내용이 담긴 포스터를 제출할 것
최소조건 2 : Google Colab Notebook에는 적어도 2개의 모델 (혹은 신경망 구조)에 대한 훈련과 성능평가가 존재할 것
최소조건 3 : 6-10주차 회의록이 존재할 것 (7,8주차는 중간고사 기간이므로 대충 적혀있어도 OK)
최종 결과물: 포스터, 발표, 코드 --- 포스터와 코드는 13주차 일 (6월 7일) 11:59pm까지 Snowboard 제출
포스터
포스터 양식: [샘플 다운로드] 후 편집하여 사용하세요.
포스터 내용 : 다음 섹션(혹은 유사한 내용)을 포함할 것 (출처 : [Stanford CS230 project guidelines])
Title : Your project title
Team : Include your names and student emails, {yourname, yourfriendsname, vangough}@sm.ac,kr
Predicting : Briefly explain the motivation for your topic, what you built, and the results. It’s easier to think of this as a quick summary of the inputs and outputs. (5 sentences max)
Data : Exactly where did your data come from and what does your contain? (ie. What are in the rows and columns? Are examples labeled with ground truth? If you have images, are they color, normalized, etc?) (2-3 sentences max)
Features : How many features do you have and which features are the raw input data (ex. color, weight, location, etc) vs. features you have derived (ex. ICA, Gaussian Kernel)? Why they are appropriate for this task? (3-4 sentences max)
Models : Exactly which model(s) are you using? Write out the basic math formulas and clearly note any modifications or additions. If you have more than one model, make subsections for each. (3-4 sentences max)
Results : Make a compact table of results. Each row should be a different model. The columns should be the training error and the test error. List how many samples are in each of the training and testing data sets. Obviously, these sets should be different. (1-2 sentences max + 1 table max)
Discussion : This is where you share your thoughts about your project. (Hopefully you have a few interesting interpretations!) Briefly summarized what just happened. Briefly explain whether or not you expected your results. If your results were good, explain why. If they were not good, explain why. (6 sentences max)
Future : If you had another 6 months to work on this, what would you do first? (2-3 sentences max)
References : 자유 형식. IEEE style is fine
*** 오프라인 공유 예정 : 인쇄하여 몇주간 통계학과 복도에 비치)
*** 수강생간 온라인 공유 예정 : 교강사가 슬랙 혹은 스노우보드에 공유
발표 (13주차 목 예정, 조정/연장 가능성 있음)
포스터 옆에서 포스터 내용의 설명 및 질문답변
코드
.ipynb (ipython notebook) 형식
설명충실성과 재현가능성을 평가함 : 각 코드의 기능 설명이 존재하여야 하며, 주요 분석결과(전처리, 훈련, 표/그림)를 재현할 수 있어야 함.
지식과 노하우의 축적을 위하여, 과제 결과물은 차년도 수강생들에게 이메일로 배포됩니다.
우수 과제물은 제출자들의 동의 하에 온라인 업로드를 추진합니다. (타 대학 포스터처럼) --- 특히 대학원 진학시 제 추천서가 필요하면 업로드를 원칙으로 합니다.
세부 평가방법 : 교수 평가 20점 + 팀간 평가 10점 + 팀내 평가 10점
교수 평가 및 팀간 평가 : 포스터/발표/코드의 우수성 평가
팀내 평가 : 팀 멤버간 팀내 기여도 평가
*** 팀내 평가의 익명성 보호를 위하여 최종 점수 (40점 만점)만 공개하며 세부내역은 공개하지 않음
다른 롤모델 수업들
오픈카톡방 질문답변 포럼
수강 환경 구축
PC (데스크탑 혹은 노트북) --- 스마트폰과 태블릿도 가능하나 비권장
스피커 --- 마이크 기능이 있는 이어폰 권장
초고속 인터넷 --- 유선인터넷 권장
조용한 공간
Zoom (실시간 회의 소프트웨어) 설치
PC : https://zoom.us 에서 다운로드
스마트폰 (비권장) : App store 혹은 google play store에서 'Zoom cloud meetings' 검색 다운로드
Zoom 설치법/사용법 예시: https://blog.naver.com/nahyun977/221452269106
중간과제 범위 : 6주차 토요일 (4월 25일) 기준 OneNote self-check에 적시된 문항들을 서술형으로 풀이
표준적인 용지 (e.g. A4, B5, 공책, ...)에 수기작성, 코딩이 필요한 부분은 "코딩"을 명시하겠음
미리 시작하길 권장합니다.
데드라인 : 8주차 토요일 (5월 9일) 23:59
Snowboard 온라인 제출 : 수기작성 파트는 스캔 필요 (PDF)
Delay not accepted (1일 초과시 25%씩 차감) -- Done is better than perfect!
평가 비중 재조정 : 시험 50점 --> 중간과제 25점, 기말고사 25점
Academic integrity : 따로 감시하지 않아도 정직하고 옳은 일을 하십시오.
온/오프라인에서의 수강생간의 토의, 힌트, 풀이방향 공유는 여전히 장려됩니다 (학습의 중요한 일부분이니까요, slack 상의 질문답변은 계속 가산점이 부여되고 있습니다)
그러나 정답을 직접적으로 교환하지 마십시오.
답안은 각자 작성합니다.
타 수강생의 답을 베낀 경우 시험 부정행위로 간주합니다.