코로나 2차 접종을 완료하고 왔다!

아직 14일이 지나지는 않았지만, 코로나 2차 접종 후 부작용은 약한 근육통만있었다.

 

1차때에도 근육통만 있었는데, 2차에는 진짜 면역이 생긴건지 더 약한 근육통만 있었다.

 

부작용이 너무 약해서 코로나에 걸려도 그냥 나았을것 같다.

코로나 백신으로 코로나를 못 이겨낼 사람들만 고생시키는 것 같다.

 

열이라도 날 줄 알고 밤을 절대 안 새고 있었는데... 이렇게 열도 안 나고 근육통만 있으니 둘러댈 변명도 없고.. 할 일도 너무 많이 쌓여버렸다.

이제 밤새서 공부해야지...

 

1-3 python tutorial: Dictionary

 

수학적으로 접근하는 딥러닝 올인원 패키지 Online

오늘도 어제에 이어 파이썬 튜토리얼을 배웠다. 

dictionary 즉, 사전형 자료형이다.

영어사전을 생각해보면, 단어가 나오고, 그에 대한 뜻이 나오듯 key가 있고, 그에 대한 value 가 있다.

파이썬의 dictionary 자료형은 어떤 자료에 대해 좀 더 명확하게 명시해야할 필요가 있을 때 사용할 수 있다.

예를 들어 어떤 시험의 A가 10명, B가 20명, F가 100명 있다면 

(['A']:10, ['B']:20, ['F']:100) 이런식으로 표현할 수 있다는 것이다.

 

dictionary에서 가장 중요한 것은 key와 value이다.

어떠한 dictionary 리스트가 있다면, 거기에서 key만 불러올 수도 있고, value만 불러올 수도 있다.

 

이번에 새로 배운 문법은 get()이라는 함수였다.

그동안 dict.keys(), dict.values() 같은 함수는 많이 이용을 했다. dict.items() 같은 함수도 많이 봐왔었다.

get()이라는 함수는 처음 보았지만, 매우 유용한 함수였다.

dictionary 자료형이 매우 긴 리스트가 되면 모든 key를 확인하기도 어렵고, 내가 찾는 key가 있는지 궁금한 경우도 있는데, 이 때 get()이라는 함수를 쓸 수 있다. 

내가 찾는 key가 있으면 그것의 value를 출력하고, 내가 찾는 key가 없으면 내가 설정해둔 값을 돌려준다.

코딩을 하다보면 유용하게 쓸 수 있을 것 같다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

수학적으로 접근하는 딥러닝 올인원 패키지 Online

오늘은 더 많이 들어보려고 했는데 오늘도 1개의 강의를 들었다.

어제에 이어 python 기초 강의를 해주셨다.

이 강의는 python을 아는 사람이 들어야할 것 같다. 기초 문법은 알고 있는 사람이 들어야 20분 안에 이해가 가능할 것이다. 만약 나는 딥러닝을 지금 당장 해야하고, 너무너무 급하다! 그러면 python을 공부하며 병행해서 들으면 될 것 같다.

python은 독학으로 Do IT! Python을 떼고 나서는 learning by doing으로 배운 나는 for문의 장단점, if문의 특성 같은 것을 배울 수 있었다.

for문을 쓸 때는 for i in range(a,b) 이런식으로 사용해왔었는데, 이 i는 i보다는 인덱스라면 data_idx라고 표기하던가, data라고 표기하여 어떤 데이터를 반복해서 가져오는지를 명시하는 것이 좋은 코드라고 하셨다.

이 강의는 수학은 아니지만, 클린코드를 배우는 느낌이었다.

강의 이름이 올인원 패키지인데 구현을 위한 클린코드 강의를 넣어주신 것 같아서 뭔가 돈을 아낀 느낌이었다.

그리고 다음에는 클린코드 강의도 한 번 찾아 들어보면 좋을 것 같다.

 

특히 놀랐던건 if문에서 else의 사용법이다.

예를 들어 True/False에 대한 출력이 다르게 나와야한다면 나는 보통 True에 대한 if문만 쓰고 나머지(False 및 오류)는 다 else로 처리했었는데 그것보다는 T/F에 대한 조건문을 다 작성하고, else는 예외처리로 사용하는 것이 디버깅이 더 편리하다는 것이었다.

 

오늘 랩미팅에서 디버깅으로 코드이해가 더 잘 될 거라고 조언을 들었는데 디버깅을 하기 위한 코드 작성법을 배운것 같다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능독학 #머신러닝 #딥러닝

수학적으로 접근하는 딥러닝 올인원 패키지 Online

 

3일차 강의는 python review 강의였다.

수학적으로 접근하다고 해서 코딩을 하게 될 줄은 정말 꿈에도 생각을 못하고 있었는데, python을 다시 마주하게 되었다. 

우리가 코딩을 배우는 이유, 그리고 우리가 코딩을 배워서 궁극적으로 해내고 싶은 목적은 바로 컴퓨터로 내 생각을 말 할 수 있게 되는 것이다.

다시 정리하자면, 논문에 구현된 알고리즘을 컴퓨터 코드로 구현해내고, 테스트하기 위해 코딩을 배우는 것이다.

라고 강사님께서 코딩을 배우는 목적에 대해 설명해주셨다.

공대에 왔으니 코딩을 해야지... 라고 막연하게만 공부해왔던 나한테는 정말 큰 흔들림이 생겼다. 

단 3초의 말로 코딩을 열심히 배울 목표를 심어주셨다.

 

이 강의는 입문자도 대상으로 하고 있으므로 python의 기초를 가르쳐주셨다.

그런데, 그냥 python의 기초 코드를 알려주신게 아니라, List의 각 특징이 의미하는 것, 그리고 List를 쓰지 않고 numpy를 사용하는 이유 등 원리적인 부분을 강의해주셨다.

 

특히 마지막즈음 말씀해주신 list comprehension 이 가장 새로웠다.

그냥 단순히 if문을 압축할 수 있는 코드인 줄로만 알고 있었는데, 그게 아니라 for문보다 의미를 명확하게 한 코드였다.

list comprehension은 어디선가 정규과정으로 배웠다기보다 그냥 코딩하면서 주섬주섬 배운 것이라 무슨 코드인지 잘 몰라서 못 썼는데, 이렇게 설명을 해주셔서 개념이 명확해진 느낌이 들었다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능공부 #인공지능독학 #딥러닝

수학적으로 접근하는 딥러닝 올인원 패키지 Online

오늘의 강의는 Chapter 1-2 Forward/Backward Propagation 강의였다.

Backpropagation을 못 들어봤다면 순전파, 역전파는 들어보셨는가?

MLP(Multi Layer Perceptron)의 기본이 되는 연산이다.

그동안 순전파는 앞으로 계산하여 값을 넘기는 연산, 역전파는 뒤로 연산하는.. 그냥 그정도로만 차이를 알고 있었는데,

이번 강의를 통해서 순전파는 prediction할 때! 역전파는 parameter update할 때! 라는 것을 알게 되었다.

 

Input layer, Hidden Layer, Output Layer 라는 기초적인 용어를 알려주셔서 초보자용 강의인가 하다가도..

Backpropagation이 첫 개념강의인것을 보면 딥러닝을 좀 배운 사람들에게 원리를 가르쳐주는 강의인가..싶기도했다.

오늘 강의 말미에 그 답을 주셨다.

패캠은 적은 시간 투자를 강조한다. 10분~20분 정도의 강의라서 그런지 내용을 매우 압축하셨다고 한다.

그래서 딥러닝이 무엇인가, 그 추상적인 것은 유튜브나 따로 여러 자료가 많으므로 그런 것을 참고하고 오면 좋을 것이라고 말씀해주셨다.

딥러닝의 감을 잡고오라는 과제아닌 과제를 내주셨는데, 초심자의 마음으로 한 번 훑고가면 좋을 것 같다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능공부 #인공지능독학 #딥러닝

패스트캠퍼스에서 100% 환급 챌린지라는 좋은 기회가 있어서 챌린지에 신청했다.

평소에 관심있게 봐오던 강의가 한 5개는 있었는데, 그 중에 제일 듣고 싶고, 가장 비쌌던 수학+딥러닝 강의를 수강했다.

오늘이 바로 1일차! 두근두근하며 강의를 시청했다.

 

수학적으로 접근하는 딥러닝 올인원 패키지 Online 1일차

첫 강의는 쉽게 introduction 이었다. 

요즘에는 딥러닝 구현을 쉽게 할 수 있도록 Tool이 많이 나오지만, 수학적인 접근이 필요한 이유를 설명해주셨다.

나도 '수학이 필요없는 딥러닝' 혹은 '수학없이 딥러닝 구현하기!' '0일 만에 딥러닝 구현' 이런 식의 책이나 강의를강많이 봐왔기 때문에 이 수업을 수강하기 전까지도 고민이 되었던 부분이었다.

강사님은 이 부분에 대해서 딥러닝 구현은 Tool이 해주기 때문에 쉬워진 것은 사실이지만, 설계에 대한 부분이 미흡하고, 딥러닝의 원리에 대한 이해가 부족하기 때문에 딥러닝의 결과를 해석하기 어려운 것이라고 설명해주셨다. 

나도 요즘 explain model 에 대해 관심이 생겨서 이 부분이 잘 이해가 됐다. explain model 논문을 읽고 발표했다가 explain이 되는 원리도 이해를 못해서 교수님께 질문 폭탄을 받고 깨달았다.. 나 수학과 이해력이 많이 부족하구나..

딥러닝의 결과를 A to Z까지 설명하긴 어려울지 몰라도 수학적으로 접근한다면, 어느 정도는 해석할 수 있을 거라고 하셨다. 내 다음 연구에서 활용하기를 정말 고대해본다..

 

그리고 딥러닝에 대해서 설명해주셨다.

딥러닝을 공부하는 사람이라면 정말 기초적인 Multi Layer Perceptron(MLP) 구조부터 설명해주셨다.

그런데, 이 구조를 알고는 있었지만, 이해하지 못 하고 있었다는 것을 바로 느꼈다.

MLP, CNN, RNN 구조를 비교해주셨는데, 결국 세 네트워크 모두 Weighted sum을 계산하고, 그 값을 activation function 으로 연산해서 값을 넘겼다.

이 연산은 달라지지 않았다. 

새로운 네트워크를 배울 때마다 너무 어려웠는데, 이렇게 원리를 알고 보니 새삼 쉽게 느껴졌다.

오늘은 소개만 해주셨는데, 앞으로 이러한 연산에 대해서 깊게 배울 거라 생각하니 기대되었다.

 

이 강의는 딥러닝을 막 시작한 입문자에게는 어려울 것이다.

전문용어(라고 말하지만 그냥 영어)를 많이 말씀하시고, MLP, CNN, RNN의 기본 구조를 몰랐었다면 아마 introduction 강의도 알아듣기 어려웠을 것이다. 물론 그 구조를 설명하시는게 아니라, 예를 들어주신 것이었지만, 아무것도 모르는 상태라면 어려웠을 것이다.

오늘이 OT라서 그렇게 느꼈을지 모르니 앞으로 계속 들어가며 난이도를 파악해봐야겠다.

 

▼패캠 강의 리스트▼

https://bit.ly/37BpXiC

 

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.*


 

#패스트캠퍼스, #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수학적으로_접근하는_딥러닝_올인원_패키지_Online #대학원생공부 #인공지능공부 #인공지능독학 #딥러닝

https://fastcampus.co.kr/event_online_chmission2108/?_ga=2.116158926.933775206.1629680150-2028699688.1627452720

패스트캠퍼스에서 작심 30일 자기계발 챌린지 강의를 열었다.

언제 다시 열지는 모르겠지만, 매년 개강즈음해서 챌린지 강의를 여는 것 같다.

 

30일동안 매일매일 강의를 들으며 블로그에 학습후기를 포스팅하면 된다!

 공백 제외 최소 500자라는 글자수가 조금 걸리지만,

수학강의를 들으며 힘들었던 부분들을 쓰면 또 금방 채워질 것 같다.

 

30일 챌린지는 습관 형성에 굉장한 도움을 줄 것 같기도하고,

해커스토익 환급반을 들으면서 

돈으로라도 몸을 움직여 공부를 하는게 안 하는 것보다는 나은 것 같아

이렇게 또 환급반을 신청했다.

 

환급 챌린지 강의로 신청한 강의는 

수학적으로 접근하는 딥러닝 올인원 패키지 Online

강의이다.

 

딥러닝 공부를 하면서 수학이 많이 부족하기도 했고, 

관련 논문도 읽어준다고 해서 이 강의를 신청했다.

 

원래 18만원정도 되는 강의인데,

환급 챌린지를 성공하면 제세공과금 22%제외하고 78%정도를 돌려받을 수 있어

약 4만원 정도에 들을 수 있다!

 

환급반 챌린지는 9월 6일 월요일부터 시작한다.

추석이 끼어있어 어떻게 될지 불안하지만 

그래도 열심히 들어봐야지!

https://youtu.be/4b4MUYve_U8

스탠포드의 CS229: Machine Learning 강의를 듣고 정리하는 포스팅입니다.

 

Linear Regression

Linear Regression이란 선형회귀라고 번역된다. Linear Regression 알고리즘은 선형 함수로 풀 수 있는 회귀 문제에 적용된다.

집 값 예측 문제를 예시로 들 수 있다.

예시로 집의 면적과 가격에 대한 데이터를 왼쪽 표로 나타내고, 오른쪽에는 차트로 나타내었다.

차트의 X축은 Size, Y축은 Price이다.

차트에서 파란색 선이 실제 데이터의 값을 이은 선이고, 빨간색 선이 데이터의 추세를 표시한 추세선이다.

Linear Regression은 이렇게 y값이 연속적인 문제에서 선형 함수를 사용하여 새로운 데이터 X가 들어왔을 때 Y를 예측하는 문제를 푸는 알고리즘이라고 할 수 있다.

 

이 문제를 푸는 순서는 다음과 같이 정리할 수 있다.

먼저 실제 데이터들이 많이 있는 Training Set을 준비하고, 학습하고, 가설 H를 만든다.

그 뒤에 새로운 데이터 x를 가설 H에 대입하여 x에 대한 y값을 예측한다.

여기서 가설은 다음과 같은 식이다.

가설이란 새로운 데이터 x가 들어왔을 때 y를 예측할 수 있는 식이라고 생각하면 된다.

모델은 파라미터인 theta (θ)를 계속해서 업데이트하면서 학습한다.

위 식에서 x는 feature의 개수이다.

feature가 많아지면 아래의 식과같이 표현된다.

이 식의 표기법을 단순화한 식은 아래와 같다. (n은 feature의 개수)

표기법 정리

앞으로 강의에서 사용될 표기법에 대해서 정리한다.

이 표기법은 강의에서만 사용되는게 아니라, 보편적으로 표현되는 기호이므로 알아두면 좋다.

How to choose parameter(theta)?

이제 가설 h(x)를 배웠으니, h(x)가 y에 가장 가까운 예측을 하도록 해야한다.

즉, h(x)가 y에 가깝도록 θ를 잘 골라야한다. 어떻게 잘 고를 수 있을까? 

 

모델의 예측값과 실제 y값의 차이를 제곱한 것이다.

우리는 앞으로 이 식을 J(θ) 혹은 비용함수라고 부를 것이다.

 

여기서 θ를 최소화하기 위해 이 식을 사용한다고 하는데, 왜 θ를 최소화하는 것인지, 이 식으로 어떻게 θ가 최소화되는 것인지는 아직 잘 이해를 못했다. (영어라서 말을 잘 이해못한 것일 수도 있다..)

 

이제 비용함수 J(θ)를 구했으니 이것을 최소화시켜서 예측을 잘 하는 모델로 훈련을 해보자.

 

J(θ)를 최소화하기 위해 θ를 업데이트해야한다. 

θ의 업데이트는 아래의 식과 같이 진행된다.

여기서 알파(α) 뒤의 식은 J(θ)의 도함수를 계산하는 식이라고 한다. 이 부분을 전개를 해주시면서 설명해주셨는데, 전개가 이해는 됐지만 다시 글로써 설명하기가 어려워서 전개부분은 건너 뛴다. 전개해보면 아래와 같은 식이 된다.

J(θ), 즉, 모델의 예측값과 실제 y값의 차이를 제곱한 것의 전개는 다음 영상을 참고하면 도움이 될 것이다.

다만, 다음 영상은 최소제곱법을 설명한 것으로, 비용함수와의 차이는 조금 있을 것이다.

https://youtu.be/-oBmMED_5rI

여기서, α는 learning rate라고 하는데, 이 알파는 여러 가지 값(0.01, 0.1, 1, 10, 100 등)을 시도해보고 최적의 값을 선택할 수 있다.

 

Batch Gradient Descent & Stochastic Gradient Descent

Gradient Descent의 단점은 데이터가 너무 많을 경우, 매개변수(θ)를 한 번 업데이트하는데 1~m까지의 데이터에 대해 

이 식을 계산을 해주어야한다. 즉, 컴퓨터 비용이 너무 많이 들고, 느리다.

 

이것을 바로 Batch Gradient Descent이다. 전체 데이터에 대해 계산하여 업데이트 하는 방식이다.

전체 데이터를 보고 계산한다는 장점이 있지만, 너무 느리다는 단점이 있어 이를 보완하기 위해 나온 것이

Stochastic Gradient Descent, SGD 이다.

SGD는 한 번에 1개의 데이터만 보고 θ를 업데이트 하는 방식이라고 생각하면된다.

https://www.researchgate.net/figure/Stochastic-gradient-descent-compared-with-gradient-descent_fig3_328106221

왼쪽의 이미지처럼 SGD는 매우 많이 진동한다. 그리고 GD(Gradient Descent)처럼 수렴하지는 않는다.

그래서 SGD가 어느 정도 수렴한 뒤(진동의 폭이 작아진 뒤) 학습률 α를 줄여가며 최적의 파라미터(θ)를 찾는 것 방법을 많이 사용한다고 한다. (왜냐면 SGD는 시간이 지날 수록 global minima 근처에서 진동하니까.)

 

Dataset의 크기가 너무 클 경우, SGD를 사용하여 빠르게 구현할 수 있다. 

 

Normal Equation

앞서 살펴보았던 Gradient Descent 방식은 조금씩 파라미터를 업데이트해가며 최적의 값을 얻는 방식이다. 그렇다면 한 번에 얻는 방법은 없을까?

이것이 바로 Normal Equation(정규방정식) 이다. 단, 정규방정식은 Linear Regression에서만 동작한다.

정규방정식을 유도하는 과정을 설명해주셨지만... ABC에서 갑자기 Z로 넘어간 느낌이라 제대로 이해하지는 못해서 정리를 하지 못하겠다..

http://cs229.stanford.edu/materials/ps0.pdf

위와 같은 내용이었는데, 대충 x가 벡터이면 f(x)를 미분하면 그 각각의 원소를 미분하면 되는 것이다. 그리고 2번 미분한 것의 미분 과정을 설명해주셨는데 아직 잘 모르겠다..

 

 

유도과정이후 위와 같은 식이 나오게 되고, 이 식을 다시 정리해서 θ를 구하면 아래와 같다.

 

 


아는 내용이라고 생각했는데 수학적인 내용도 많이 나오고, 영어로 진행되고.. 다시 블로그에 정리하다보니 많이 몰랐다는 것을 알게되었다. 패스트캠퍼스 강의로 딥러닝 수학도 끊어놨는데 수학 정말 열심히 해야겠다...

'인공지능' 카테고리의 다른 글

DeepLearning - Ian Goodfellow 읽기 시작!  (0) 2022.03.11
[CS229-Autumn 2018] Lecture 1 - Welcome  (0) 2021.08.25

+ Recent posts