패스트캠퍼스에서 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

스탠포드의 CS229(Autumn 2018) 강의를 들으며 내용정리를 포스팅해보려한다.

 

CS229 강의란?

스탠포드 대학의 머신러닝 강의로, 기계학습 및 통계적 패턴 인식에 대한 강의이다. 

지도학습, 비지도학습, 학습이론, 데이터마이닝 등 기계학습과 관련된 내용을 담고 있다.

더 자세한 강의 소개는 아래 홈페이지를 참고하면 된다.

http://cs229.stanford.edu/

 

CS229: Machine Learning

CS229: Machine Learning (Details for Fall quarter will be updated soon) Instructors Moses Charikar Chris Ré --> Course Description   This course provides a broad introduction to machine learning and statistical pattern recognition. Topics include: super

cs229.stanford.edu

 

머신러닝을 공부하는 사람들 사이에서는 강의 이름은 한 번쯤 들어본 적이 있을 것이다.

그만큼 베이직한 강의이고, 머신러닝에 대해 광범위한 내용을 다루고 있다.

 

필수 요건

강의를 듣는 것은 자유이긴하지만, 기본 지식으로 행렬의 곱, 벡터의 연산 등 기초적인 수학 지식이 있어야한다.

이진트리, 스택 등의 기초적인 컴퓨터 공학 지식도 필요하다. 

만약 이러한 컴퓨터공학분야의 지식이 부족하다면 그 부분을 먼저 공부한 뒤 이 강의를 듣는 것이 좀 더 수월할 것이다.

 

아직 본 강의를 많이 수강하지 않아서 난이도는 잘 모르겠지만, 수학적 지식이 부족하여 망설여진다면 Coursera의 Machine Learning - Andrew Ng 강의를 듣는 것도 나쁘지 않을 것이다. 이 강의는 스터디를 한 번 했었는데, 수학에서 모르는 개념을 알려주어서 수강하기에 괜찮았다. 다만, 수학을 너무 쉽게쉽게 설명하고 넘기셔서 어렵게 느껴지는 부분이 있기도 했다. 하지만 한 번 훑기에 좋은 강의같다.

 

프로젝트

이 수업은 스탠포드 대학교의 강의이므로 과제가 있다. 물론 유튜브로 청강하는 사람들은 과제를 할 필요는 없지만, 스탠포드 학생들의 프로젝트 결과물을 볼 수 있다.

http://cs229.stanford.edu/proj2019aut/index.html

 

CS229: Machine Learning - Projects Fall 2019

Bypassing Censorship Natural Language Siah Yong Tan, Christopher Glenn Laban Cross, Sasankh Munukutla [report] [poster]

cs229.stanford.edu

2018년 가을 과정의 프로젝트는 찾지 못했지만, 위의 링크를 통해 2019년 가을 과정의 프로젝트 결과물을 볼 수 있다. 

아직 읽어보지는 못했지만 결과물의 퀄리티가 좋아보여 혹시 연구에 참고할만한 부분이 있을까하여 훑어보려한다.

 

강의 내용

1. 머신러닝의 정의

아서 사무엘(1959)의 정의: 컴퓨터가 명시적으로 프로그램하지 않아도 학습할 수 있는 능력을 주는 학문 분야

톰 미셸(톰 미치엘)(1998): 작업 T에 대한 경험 E와 측량 P가 있을 때, T의 P가 E에 따라 증가한다면, 프로그램은 학습한다고 할 수 있다.

 

2. 머신러닝

머신러닝에는 

  • 지도 학습 Supervised Learning
  • 비지도 학습 Unsupervised Learning
  • 강화 학습 Reinforcement Learning

이러한 종류가 있다.

각 학습에 대한 내용은 Coursera의 Machine Learning 강의와도 겹치는 부분이 많았다.

1강에서 이론에 대한 설명이 있긴하지만, 기본적인 내용이므로 자세히 정리하지는 않겠다.

인공지능 모델을 공부하다보면, '선형적인 관계' '비선형적인 관계' 가 자주 보인다.

인공지능 관련 수학으로 가장 기초적인 수학도 Linear Regression. 즉, '선형'대수학이다.

이번 포스팅에서는 이 '선형'이라는 것이 무엇인지 짚고 넘어가려한다.

 

선형적인 관계란?

선형적인 관계란 말 그대로 '직선'의 형태를 생각하면된다.

1차 함수와 같이 직선으로 그려지는 형태를 말한다.

함수 말고도, 위와 같이 선형적인 '관계'를 보일 수도 있다. 순차적으로 이어져서 선으로 표현이 가능한 관계라고 이해하면 되겠다.

그렇다면 비선형적이라는 것은 무엇일까?

 

비선형적인 관계란?

비선형적이라는 것은 nonlinear, 즉 선형적이 아닌 것이다. 여기서 linear의 line 은 직선을 뜻한다.

즉, 직선이 아니라는 것이다. 직선이 아니라면?

그렇다. 곡선이다.

여러 가지 예시가 있겠지만, 이렇게 곡선으로 나타나는 함수를 예로 들 수 있다. (원의 방정식, 지수 함수 그래프 등등을 생각할 수 있겠다.)

이렇게 단어의 뜻을 알고보니, '선형대수학'에서는 무엇을 배우는 것인지도 궁금해졌다.

 

선형대수학이란?

선형대수학을 공부하며 머리가 복잡해져서 생각해보지 못한 부분이었는데, 선형대수학에서는 정말 선형적인 수학만 다루고 있었다.

 

선형대수학(線型代數學, 영어: linear algebra)은 벡터 공간, 벡터, 선형 변환, 행렬, 연립 선형 방정식 등을 연구하는 대수학의 한 분야이다. 현대 선형대수학은 그중에서도 벡터 공간이 주 연구 대상이다. 추상대수학, 함수해석학에 널리 쓰이고 있다.

출처: 위키백과 ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99

 

위와 같이 선형적으로 나타낼 수 있는 방정식, 공간, 변환 등에 대해서 다루는 분야가 선형대수학이었다.

 

(아래는 몰라도 되는 부분이다.)

출처: https://angeloyeo.github.io/2020/07/24/Jacobian.html

위 그림과 같이 비선형적인 그래프를 국소적으로 관찰하면 선형으로 근사시켜 생각해볼 수 있다고 한다. 위의 개념은 필자도 공부 중인 부분이라 자세히 설명할 수 없지만, 선형적과 비선형적 사이의 관계에 대해서 생각해볼만한 부분이라 덧붙여보았다.

 

참고자료

ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99

 

선형대수학 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 선형대수학(線型代數學, 영어: linear algebra)은 벡터 공간, 벡터, 선형 변환, 행렬, 연립 선형 방정식 등을 연구하는 대수학의 한 분야이다. 현대 선형대수학은 그

ko.wikipedia.org

angeloyeo.github.io/2020/07/24/Jacobian.html

 

자코비안(Jacobian) 행렬의 기하학적 의미 - 공돌이의 수학정리노트

 

angeloyeo.github.io

m.blog.naver.com/a2zygote/220922530433

 

[결국은어휘력] 선형적 ↔ 비선형적 (나름 뜻 총정리...)

'선형적', '비선형적' 모두 사전에는 안 나오지만 여러 학문 분야에서 흔히 쓰는 용어입니다. 문자적 의미...

blog.naver.com

 

gensim 패키지를 사용한 코드를 실행하다가 아래와 같은 오류가 떴다.

Stackoverflow 를 찾아보니 다음과 같이 해결했다.

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')

import gensim

stackoverflow.com/questions/41658568/chunkize-warning-while-installing-gensim

신나게 코딩하다가 갑자기 이런 오류가 나왔다.

파일 경로명에 무슨 오류가 생긴 것 같다.

 

찾아보니 \(역슬래시) 표시를 /(슬래시)표시로 바꿔주면 된단다.

 

이렇게 슬래시표시로 바꿔서 오류 해결!!

Kaggle 에서 한글 데이터셋 CSV 파일이 깨졌다.

한글 데이터는 깨짐 현상이 발생하는 경우가 많아 다른 사람들도 이러한 문제를 많이 겪을 것 같아

이를 해결하는 방법을 포스팅해보려 한다.

 

먼저, 필자가 다운로드 하려던 데이터셋은 다음 주소의 데이터셋이다.

www.kaggle.com/c/korean-hate-speech-detection/data

 

Korean Hate Speech Detection

Identify hate speech in Korean entertainment news comments

www.kaggle.com

한국 연예기사의 댓글들을 모아놓은 데이터셋이다. 원래는 한글 데이터가 있었지만 다운로드 받아보면, 아래 사진과 같이 한글이 깨져서 보이는 것을 확인할 수 있다.

 

해결 방법

 

새 Excel 파일을 하나 실행하고 데이터탭을 클릭한다.

그리고 텍스트/CSV 를 눌러 다운로드 받은 CSV 파일을 열어보자.

 

dev.hate 파일을 열어봤다.

 

 

위의 949 한국어로 되어있는 부분을 65001 (유니코드 UTF-8)로 변경한다.

위와 같이 한국어가 정상적으로 나오는 것을 확인할 수 있다. 오른쪽 아래의 로드 버튼을 누르면 아래와 같이 로드된다.

 

매번 파일을 이렇게 불러오면 귀찮으니 '다른 이름으로 저장'해서 CSV(UTF-8) 파일로 저장했다.

 다시 확인해봤을 때도 잘 열리는 것을 확인할 수 있었다. 

+ Recent posts