|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
< Wk 1 (9/4)> =======================================
출석; 종이 출석부에 각자 싸인
* 과목홈 dnuealgo ; 회원 가입 AI23b-실명
* 교과목 개요; 인공지능이 작동하는 원리와 개념을 이해하기 위한 인공지능 기초과목이다.
인공지능 교육에는 다양한 측면이 있으나 본 과목에서는 인공지능의 핵심분야에 대한
메카니즘을 개념적으로 이해하는데 주력한다. (AI알고리즘의 작동원리에 초점을 맞춘다)
<Topic #1> 학습목표; AI의 개요, 유래, 발전; 인공지능 알고리즘의 특징을 이해한다.
수업내용; 역사적 성취; Alan Turing과 튜링 테스트,
John McCarthy, ELIZA, Perceptron,
Mulilayer perceptron, Backpropagation,
Deep Learning, ANN, IBM Watson, AlphaGo, 등의 역사적 의미.
수업자료; [WeeklyMat / #3]
Intro-PPT
ELIZA 대화 예; [ LecPrep / #408]
퀴즈; [LecPrep / #409(Q) #306(Q&Ans)]
< Topic #2> 학습목표; 외판원문제(TSP)로 이해하는 휴리스틱의 개념;
인공지능 알고리즘과 기존 알고리즘의 차이를 이해한다.
Optimal 솔루션과 suboptimal 솔루션의 차이를 이해한다.
exact 솔루션과 approximation을 구분 할 수 있다.
휴리스틱 알고리즘의 필요성을 이해한다.
수업내용; TSP, combinatorial explosion,
optimal solution vs. suboptimal solution.
exact algorithm vs. heuristic
수업자료; [WeeklyMat / #4] ; HWP
Lab ; Exl Worksheet [LecPrep / #410]
10개 지점에 대한 실습 (try to obtain best soln) ; 알고리즘 적용 불필요. (사람이 푼다)
--> find out best soln. (whose is the best?)
--> and then, (알고리즘이 푼다) use shortest path algo
--> and then, try your own best algo (스스로의 알고리즘을 고안하고 적용한다)
--> 이메일 제출;
< Wk 2 (9/11)> =======================================
출석; 종이 출석부에 각자 싸인
시범; Brute-Force; see [AI-Lec-WeeklyMaterials / #4 ; TSP]
(10개의 지점에 대한) 최적해를 구하자; (permutation 외에는 방법이 없다)
Permutation - Py; Run [permute-06-.py] ; 입력data: Main에서 입력리스트 L을 수정하자
L = [0,1,2,3,4] (120개) -> [0,1,2,3,4,5] (720개) -> ...
Brute-Force; with 10 data pts ; Run [TSP-01-Brute-Force-c-.py] {실행시간; 수분이내}
{[참고자료 #4]에 soln 결과있음}
결과 route를 Exl에 플로팅 했다; _TSP-Lab-10pts-01-brute force soln - Permutation.xlsx
with 15 data pts ; Run [TSP-01-Brute-Force-d-.py]
[Q] Brute-Force의 문제점은? Ans> it takes too long
-> 휴리스틱의 필요성 ; "휴리스틱 이란?" [LecPrep/#412]
실험; 37개의 점을 연결해 보기. 알고리즘을 도출하기(일반화). (그림 종이 나누어주기)
고안한 알고리즘은 Optimal soln(최적해)를 보장하는가?
> 휴리스틱의 예; Convex Hull ( Result= (with 10 pts) 60.5 ; (with 15 pts) 111.2)
알고 개요 설명(Hwp) & Run Py (TSP-03-ConvexHull-j-tour-LAST.py)
> 내용 Rvw ; use PPT
> HW ; Qz [LecPrep / #411]
< Topic #3> 학습목표; 선형회귀법(Linear Regression) 기반의 예측 ;
데이터로부터의 예측이 가능한 이론적 근거를 이해한다.
상관관계의 의미를 이해한다.
SSE(Sum of Squares of Errors)의 의미를 이해한다.
선형회귀의 의미를 알고 선형회귀 알고리즘을 데이터에 적용하여 결과를
산출하고 해석할 수 있다.
수업내용; 상관계수의 의미, SSE의 의미와 선형회귀 알고리즘에서
활용되는 메카니즘의 이해, 선형회귀의 뜻과 활용, 예측과 분석.
* 참고자료; [ AI-Lec-WeeklyMaterials / #5 ] ; Q&A, ppt, Exl, LR-hwp, Py, 지도학습인이유 설명.
다항(polynomial)회귀를 실험해 볼 수 있는 사이트
> PPT로 문제설명 (Intro); 개요, 개념 이해.
> Exl로 실습하기; LR알고리즘을 Exl에서 계산한다.
학생 실습 파일 -> 실습방에 넣는다 ; [LecPrep / #414]
< Wk 3 (9/18)> =======================================
> 교수용컴에 아나콘다 설치? 확인
출석; 종이 출석부에 각자 싸인
> Rvw; TSP-Qz
> Exl로 실습하기; LR알고리즘을 Exl에서 계산한다.
; see soln file
> 반복하여 답을 구하는 단계는 Py를 실행한다.
Py 설명 자료; BK-docx, Hwp
[LR-01-ReadData.py]
Obj; 키와 몸무게 데이터를 파이썬 프로그램에서 2차원배열로 저장한다.
배열의 이름은 Dat이다. 17개의 데이터가 있다.
[LR-02-NormalizeData.py]
Obj; 원점을 중심으로 데이터를 이동한다.
이렇게 하면, 직선의 Y축 절편을 고려 할 필요가 없다.
[LR-03-4areas-slope.py]
Obj; 직선의 기울기를 찾기 위한 사전 작업인데,
기울기가 1 또는 –1 둘 중 하나를 결정한다.
[LR-03-4areas-slope-Soln-GET_SLOPE] ; get_slope()함수
[LR-04-SSE.py]
Obj; 실제의 데이터와 계산된 직선의 방정식과의 오차를 줄이기 위한 방법으로
SSE(Sum of Squares of Errors)를 사용한다.
[LR-04-SSE-Soln-Compute_SSE] ; SSE()함수
[LR-05-SSE-ChangeSlope.py]
Obj; SSE를 감소하기 위하여 직선의 기울기를 반복적으로 변경한다.
[LR-06-SSE-delta min_sse.py]
Obj; 최소의 SSE를 출력한다.
Result; slope=1.27 min_sse=1499.8
[LR-07-Inquiry.py]
Obj; (LR의 최종 단계) 사용자가 키(height)를 입력하면
몸무게(weight)를 예측한다. (normalize의 역순이 필요)
(e.g.) 166 -> 67.8
[Q] 기울기(slope)의 시작은 무엇인가? 어떻게 결정할까? > 간단, 단순한 형태 ; 반복의 시작
* 반복; 반복의 시작, 과정(SSE로 전체 오류를 줄여나간다),
종료조건; SSE가 줄어들다가 커지는 시점에 종료
* 종료시점의 유의사항. SSE가 커지는 시점의 직전 SSE가 최소값이다. 그렇다면, slope는 얼마일까?
* 이렇게하여, 최종적으로 slope가 결정되면, Inquiry를 어떻게 처리하는가?
Ans> normalize의 역순을 거쳐야 함.
*** 다항(polynomial)회귀를 실험해 볼 수 있는 사이트;
구글 검색; polynomial regression data fit
--> arachnoid.com
degree의 크기에 따라; 과소적합, 과대적합
* HW; 질문; LR - Q [LecPrep/#413] [Ans;#289]
< Wk 4 (9/25)> =======================================
출석; 종이 출석부에 각자 싸인
> Rvw; 수내간 & LR-Qz
<Topic 4> Bayes ==================
베이지언(Bayesian) 확률 기반의분류(Classification)/예측 문제;
데이터에대한 확률과 조건부 확률(conditional probability)을 계산할 수 있다.
Kolomogrove axiom을 이해하고 데이터에 적용할 수 있다.
Bayes rule 알고리즘의 적용 결과를 분석하고 판단 할 수 있다.
유사한 문제를 Bayes rule로 풀 수 있는 응용력을 기른다.
수업내용; ①조건부 확률, ②Kolomogrove axiom, Bayes rule
알고리즘의 적용 결과의 분석과 판단(또는 분류).
> 실습; Exl ; [LecPrep / #363]
> PPT ; Rvw
> 숙제; Bayes 실습 Exl 제출 (이메일 첨부)
<Topic 5> KNN ==================
> 수업자료; [AI-Lec-Weekly... / #9]
> 실습; Exl Lab File;[LecPrep/#421]; Soln File; [AI-Prog/#12]
> KNN 구현 단계(Py); Omit (간단한 문제이므로 Py가 필요없다. Exl로 충분하다)
> PPT ; Rvw
> 숙제; QZ [LecPrep / #422]
< Wk 5, 6 (10/2, 9)> =======================================
(10/2;추석 휴무, 10/9;한글날휴무) ; LMS 강좌(DTRF, Q-Learning)
< Wk 7 (10/16) =======================================
> Rvw; Bayesian prob 숙제; Exl 실습 완성(Due 10/15 Sun) ; to grade on 10/16 bef class.
> KNN; Exl로 푸는 방법을 간단 설명한다. K=3, K=5일 때. PPT로 요약설명.
숙제 안내(Exl 완성). (대문에 안내되었음)
<Topic 6> DTRF
> DTRF; Rvw PPT & Qz(due 1wk)
참고자료; [WeeklyMat/#8] ; Hwp, Py(three Run files), pptx, Q&A
Py ; run programs ; list & obj
;; Docu; _DT-PyCoding-Docu.txt, _RF-PyCoding-Docu
< Wk 8 (10/23) =======================================
> 종이출석부
> Rvw Prev Lecs(수내간)
> Omit; Rvw HW ; KNN Exl, KNN Qz
> Lec; RF Py ; contiue (RF-06g;단말노드 만들기 부터) -> Finish it
[06g] ; 단말노드 만들기 과정
[07] ; DT하나에 대한 질의와 답
[08] ; 생성된 각 DT에 대한 질의와 답
[09] ; 프로그램[08]의 답을 Weight 벡터에 수치로 환산하여 각 라벨에 누적한다.
[10] ; 사용자의 데이터를 받아들여 모든 DT를 처리한 Weight 벡터를 계산한다.
> HW; DTRF Qz (due one wk)
> Lec; QL (see Topic 7 below)
<Topic 7> Q-L
> 참고자료; [WeeklyMat/#19] ; Hwp, Exl, Py(three Run files), pptx
> QL; Rvw PPT Qz(due 1wk)
> Omit; Exl Lab
< Wk 9 (10/30) > =======================================
> Lec; QL Py ;
QL-07-ReDoQT ; Done (QT의 0번행이 모두 0이 되는 문제를 해결했다)
Next; QL-08-FindGoalPath ; start노드를 키보드입력하면 goal로 가는 path를 출력.
QL-10-FindGoal-INF ; 노드간의 연결정보를 입력파일로부터 읽음. 대용량 용이.
노드수가 10,20,24,30일때 실행시간 관찰.
[탐구문제] QL에서 노드의 수가 많을 때(예; N>30),
계산시간을 줄일 수 있는 방법(휴리스틱)을 고안하자. (아이디어 서술)
(제출후, 시범) QL-11-GetSingleNode-INF ;
> 숙제; QL Qz (None) (to be prepared for next semester)
<Topic 8> KMC ==================
> 참고자료; [WeeklyMat/#09] ; Exl. ppt, Py, ;; BK-KMC
> 실습; Exl [LecPrep]
> PPT ; Rvw
> KMC 구현 단계(Py);
[01]; Data
[02]; initiating two groups
[03]; Computing new centroids
[04]; Iteration
< Wk 10 (11/6) > =======================================
> HW Rvw; QL
[탐구문제] QL에서 노드의 수가 많을 때(예; N>=30),
계산시간을 줄일 수 있는 방법(휴리스틱)을 고안하자. (아이디어 서술)
(제출후, 시범) QL-11-GetSingleNode-INF ; (Run qq11)
> HW Rvw; KMC
[탐구문제] KMC에서 다수의 결과들 중에서 최선의 결과를 선택하는 방법은?
(Run kk04c) ; Choose best ans. [kk04c.py]에 데이터 50개가 들어있다.
(외부 입력 필요없다)
Res; at 12th iter, (less than one sec); distTot ;
각 그룹내의 중심점과 동일 그룹내의 각 점들의 거리의 합)
(Run ten thousand iterations) (Run-time; less than a min.)
Seeds; r1= 12 r2= 13
GroupP= 22 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 22]
GroupQ= 28 [21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
distTot= 156.03
> KMC PPT Rvw ; 마지막 요약 부분만.
> 숙제; KMC QZ [LecPrep] ;
> 머신러닝 보충 자료; [LecPrep/#386] {[창고]에 넣어준다}
<Topic 9> Perceptron ==================
수업자료; [AI-Lec-WeeklyMaterials / #12] ; PPT, Exl work.
; 참고자료; [AI-Prog / #31] Py, PPT, Hwp
> 단층 퍼셉트론(SLP; Single-Layered Perceptron)을 사용하여
데이터를 두 그룹으로 나누는 직선의 방정식 구하기.
(데이터에 그룹 정보가 있음)
Exl Lab.[LecPrep] (오류수정1) 진행중.
< Wk 11 (11/13) (5 wks ahead. incl. this one) > =======================================
> 머신러닝 보충 자료; [LecPrep/#386] {[창고]에 넣어준다}
<Topic 9> Perceptron ==================
수업자료; [AI-Lec-WeeklyMaterials / #12] ; PPT, Exl work.
; 참고자료; [AI-Prog / #31] Py, PPT, Hwp
> 단층 퍼셉트론(SLP; Single-Layered Perceptron)을 사용하여
데이터를 두 그룹으로 나누는 직선의 방정식 구하기.
(데이터에 그룹 정보가 있음)
Exl Lab.[LecPrep] (오류수정1)까지 설명해주고,
(오류수정2), (오류수정3)은 실습 (Reached a goal)
> 퍼셉트론 구현(코딩) 요약; 참고자료 [AI-Prog / #31] (Py files)
(03) [PC-03-Compute x2.py]; compute slope, intercept, and x2, given x1. (docx;p.40/82)
(04) [PC-04-Classification.py]; 직선의 방정식을 이용하여
어떤 데이터가 그룹A에 속하는지 또는 그룹B에 속하는지를 구분한다.
(05) [PC-05-NewLine.py]; 그루핑 오류를 찾고 그 오류를 수정하기 위한
새로운 직선을 구한다(첫번째 오류의 수정)
(06) [PC-06-ErrCorr-Iter.py]; 이전 단계 [05]의 오류 수정 과정을 오류가
없어질 때까지 반복한다.
(07) [PC-07-classifier.py]; 사용자의 x, y 입력을 받아 A 또는 B의 어느 그룹에
속하는지를 판별한다.
{Omit} (08) [PC-08-InitWeights.py]; Weights의 초기값이 결과에 어떠한 영향을
주는지 알아보자.
> SLP를 사용한 논리연산
수업에서 답안 제시; And, Or, Nand
> Rvw PPT
> HW; Lab-Exl
< Wk 12 (11/20) (4 wks ahead. incl. this one) > =======================================
> 단층 퍼셉트론으로 Xor를 구현할 수 없는 이유; 결론만 말한다. (Ref;Hwp)
이유는 Sigmoid를 공부한 후, MLP 단원에서 다룬다.
<Topic 10> Sigmoid ==================
수업자료; [AI-Lec-WeeklyMaterials / #33] ; Exl work, Hwp.
; 참고자료; [AI-Prog / #] Py, PPT, Hwp
> Sigmoid; Lab-Exl[LecPrep], tanh와의 비교.
> Rvw PPT
<Topic 11> MLP ==================
수업자료; [AI-Lec-WeeklyMaterials / #34] ; Hwp, Exl(St,Soln)
; 참고자료; [AI-Prog / #] Py, PPT, Hwp
> MLP (Xor) ; MLP로 Xor문제를 해결함.
Lab-Exl; St; ANN-XOR-Sigmoid-TableEmpty-St-231116.xlsx ; [LecPrep]
Soln; ANN-XOR-Sigmoid-Table Soln-220724.xlsx
풀이; [LecNotes]
> Omit; Rvw PPT
--------------------------------
< Wk 13 (11/27) (3 wks left. incl. this one) > =======================================
> Rvw 숙제; {Rvw QZ} {Rvw XOR 구현하기 - Exl Lab}
> CNN ; Exl - Lab
<Topic 11> CNN ==================
자료; [Weekly Mat / #35] CNN - Hwp, PPT, Exl
> 개념; PPT
> 실습; Exl ; [Lec-Prep / CNN-egOX ; Data & 6 cases = Exl]
Data; [실습 file= CNN-egOX-01-OX-FourData.xlsx]
[Lab문제]; Exl worksheet & Soln]; O를 인식. O 필터를 만들어보자.
[Lab file= CNN-egOX-02-St-O.xlsx]
Soln> [Lab file= CNN-egOX-03-St-6 cases.xlsx]
[Lab문제] ; X를 인식하는 필터를 설계하고, 결과를 구하자.
[Lab file= CNN-egOX-03-St-6 cases.xlsx]
[Lab문제] 변형된 O, X를 인식하자.
[Lab file= CNN-egOX-03-St-6 cases.xlsx]
<Topic 12> BP ==================
PPT ; 편미분에서 Chain Rule까지 설명했다.
> Rvw 숙제; CNN-Lab(O/X) 김광우 외 모두 틀렸다!
< Wk 14 (12/4) (2 wks left. incl. this one) > =======================================
BP
PPT ; 개념위주로 설명한다. (지난주 복습필요)
Lab; Exl로 BP를 실습한다. ([창고]에 다이어그램, BP알고리즘)
Python으로 실행하여 반복과정을 설명하고, 결과를 얻는다.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
< Wk 15 (12/11) (Last Week) > =======================================
> Rvw 숙제; BP-QZ, BP-Lab-Exl (w1,...,w4 계산문제)
<Topic 5 Nonmonotonic & CSR ==================
> 참고자료; Hwp
> 수업내용 간추림; 학기 전부 요약
> Grading & Classroll
%%%%%%%%%%%%%%%%%%%%%%%%%
//
|