Reference :
https://github.com/taehojo/deeplearning
1) 모두의 딥러닝 Ch01 ~ Ch03 요약
2) WSL 설치
3) WSL 환경에서 Anaconda 사용해서 tensorflow 실행해보기
딥러닝에 관하여
인공지능이라는 범주 안에 머신 러능이라는 기존의 데이터를 이용해 앞으로의 일을 예측하는 머신 러닝 기법이 있는데 이 중에서 딥러닝은 머신러닝의 기법 중 하나이다.
딥러닝 실행을 위해서는 다음의 세가지 요소가 필수적이다.
1) 데이터 - 과거의 자료를 통해 새로운 입력이 들어올 때 학습을 시켜서 새로운 데이터가 어떤 것인지 추론을 하게 해준다.
2) 컴퓨터 - 딥러닝을 실행시킬 몸체 즉 CPU나 GPU에서 실행할지 정해야 한다.
3) 프로그램 -딥러닝을 구동할 수 있게 하는 프로그램이다.
책에서는 구글 코랩을 통해서 딥러닝을 실행해 보았지만 어차피 Anaconda를 WSL에서 실행할 것이므로 넘어가겠다.
기존 프로그램 & 머신 러닝
기존)
데이터 -> 일반 프로그램 -> 답
=> 답을 발견하는데 초점
머신러닝)
데이터,답 -> 머신러닝 -> 규칙!
=> 데이터 사이의 규칙을 발견하는 데에 초점
이렇듯 머신러닝에서 데이터의 패턴을 분석하는 과정을 학습(training)이라고 한다.
이러한 과정을 통해 그래프 위에 분포도를 두고 머신러닝을 통해 학습시킨 데이터를 통해 새로운 입력이 들어오면 이 데이터가 어떤 식으로 분류될지 예측할 수 있는데 이를 그림으로 설명하면 다음과 같다
=> 그림을 잘 못 그리긴 했지만 그냥 넘어가자
이 다음 부분은 이후 진행할테니 넘어가도록 하겠다.
수학은 정말 중요~~하다(아주) 원리를 알지 못하는데 어떻게 실행을 하겠는가
그러니 우리는 수학을 공부할 것이다.
1) 일차 함수
출처 : geogebra
위 함수는 y = 2x +3의 일차 함수이다.
x가 변하면 y의 값이 변하는 기초적인 함수이다.
이 때 이 함수를 다음과 같이 나타낸다.
y = ax + b
a는 기울기(기울어진 정도), b는 y 절편(축과 만나는 지점)을 나타낸다.
2) 이차 함수와 최솟값
출처 : geogebra
위의 함수는 geogebra라는 계산기 사이트의 툴을 통해서 plot한
y= x^2의 그래프이다.
보통 y = ax^2으로 나타내는데 a>0이면 밑으로 a<0이면 위로 볼록하다.
만약 x축으로 p만큼 y축으로 q만큼 이동하고 싶다면
y= a(x-p)^2 +q로 나타낼 수 있다.
다음은 x축으로 2만큼 y축으로 1만큼 위의 그래프를 이동 시켜본 것이다.
보다시피 이런 방식으로 나타낼 수 있다.
딥러닝에서는 이 최솟값을 찾아내는 방법이 중요하다. 4장에서 '최소 제곱법'을 통해 최솟값을 찾는 방법을 배울 텐데 이를 위해서는 미분과 기울기를 알아야 한다.
3) 미분, 순간 변화율과 기울기
미분해서 0이 되는 값은 최솟값이다. 미분이란 어떤 함수의 a와 b사이에 있는 값을 구하는 건데 이 값은 보통 기울기와 같다. 이를 변화율이라 한다.
만약 a와 b의 간격이 0에 가까워 진다면 이 때 생기는 값을
순간 변화율이라고 한다.
어느 순간에 어떤 변화를 하는지 숫자로 나타낸 것을 미분 계수라고 한다.
기울기를 구하는 법은 간단히 설명하겠다.
xy평면에서 a라는 점의 순간 기울기는 이렇게 나타낸다.
이 공식을 이용해서 풀면 된다.
4) 편미분
만약 변수가 2개 또는 기 이상이라면 어떨까?
이러한 함수는 f(x,y) = x+xy 우리가 보통 알던 일변수 함수가 아닌 이변수 함수이며 2차원이 아닌 3차원이다. 이를 미분하기 위해서는 x와 y에 관해 따로 미분을 해줘야 한다. 이러한 미분을 x또는 y에 관해 편미분한다고 말한다.
5) 지수와 지수 함수
다음은 지수함수이다. 지수함수는 밑에 있는 수를 '밑'이라 하고 위에 있는 수를 '지수'라고 한다.
y=a^x이런 식으로 나타내는데 a가 1보다 크면 양으로 증가하고, 0과 1 사이면 감소한다. 하지만 보면 알듯이 어떤 threshold(상한선, 하한선)이 존재한다.
6) 시그모이드 함수
시그모이드 함수는 지수 함수에서 밑 값이 자연 상수 e인 함수를 의미한다.
만약 자연상수 e가 분모에 들어가면 시그모이드라 하는데 이를 식으로 나타내면 이와 같다.
x가 0과 5에 가까워지는 겂을 확인할 수 있다. 보기 쉽게 0.2를 분모에 넣었다. 0.2는 1/5기 때문에 5에 가까워진다는 것을 알 수 있다.
7) 로그와 로그 함수
로그함수는 지수 함수가 y = a^x일 때 로그함수가 y=logax라면 y=x에 대칭인 함수이다.
로그 함수는 로지스틱 회귀 모델 : 참 거짓 판단하기에서 다시 나온다.
https://learn.microsoft.com/ko-kr/windows/wsl/install
이 사이트에서 매뉴얼을 보며 설치할 수 있다.
만약 windows11 등 최신 버전이라면 그냥 이 명령어로 설치 할 수 있다.
powershell
관리자 권한으로 실행 후 해당 명령어 입력
wsl --install
다시 시작 후
Ubuntu를 바로 실행하거나 사용하고 싶은 버전의 우분투를 microsoft store 통해서 다운 받아서 실행한다.
간혹 옛날 버전 PC를 사용할 때는 이전 버전의 WSL 설치를 통해서 순차적으로 설치 해야할 수도 있다.
https://learn.microsoft.com/ko-kr/windows/wsl/install-manual
간단하다.
powershell 관리자 권한으로 실행 후
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
가상화 머신(Virtual Machine)
플랫폼을 실행한다.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
이후 한번 컴퓨터를 다시 시작해준다. <=중요
이후 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
해당 링크를 통해서 linux 커널 패키지를 최신 버전을 설치해준다.
해당 명령어를 통해서 wsl2를 기본버전으로 설정해준다.
wsl --set-default-version 2
마지막으로 UBUNTU 버전을 아무 거나 설치한다.
이제 linux 아이디와 비밀번호를 설정한다.
본인은 PUTTY를 써서 통신을 할 수 있는 mobaxterm에서 실행할 것이다.
mobaxterm installer edition을 설치하면 다음과 같이 나옴을 볼 수 있다.
WSL 실행 후에 우리는 다음 명령어를 wsl에 입력한다.
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
이후
sh Anaconda3-2021.11-Linux-x86_64.sh로 anaconda를 설치해준다.
이제 path를 설정 해줘야 한다.
vi ~/.bashrc
로 들어간다.
insert를 누르고(이걸 눌러야 뭘 type할 수 있다.)
export PATH=/home/(당신의username)/anaconda3/bin:$PATH
이렇게 넣고
ESC -> :wq 누르고 엔터를 누르면 변경이 저장된다.(만약 잘못 적으면 당황하지말고 :q!를 누르면 저장되지 않고 탈출한다.)
이제 conda가 설치 되었다. wsl을 종료하고 다시 들어온 후
conda --version
을 누르면 그 버전이 실행되는 것을 볼 수 있다.
이제
conda create -n deep_learning python=3.9.7을 입력한다.
이런식으로 바뀌면 성공이다.
본인은 notebook을 먼저 설치했다.
$pip installl notebook
다음의 두 명령어를 입력해주자.
conda activate deep_learning
conda install jupyter == 1.0.0
이 다음에는
jupyter notebook
을 입력하면 다음과 같은 링크가 나온다. 이 링크로 접속하자.
이후 여기서 new를 누르고 python3를 누른다.
다음과 같이 라인을 순서대로 입력하고 실행해본다.
책에는 !pip install tensorflow==2.9.1
를 입력해 보라 하였지만 그리 입력하니 다음과 같은 에러가 떴다.
다음을 해결하기 위해 wsl에서
$conda install tensorflow
를 입력해봤다.
저 위에 failed 2개가 신경 쓰이긴 하지만 딱히 문제는 없었다...!
이후 jupyter notebook
에서
!pip install tensorflow==2.9.1
을 실행해보고 !pip install tensorflow
를 실행해보니 다음과 같이 나오며 올바른 tensorflow 버전이 출력되는 것을 볼 수 있다.
keras
도 처음에는 그냥 keras를 설치하고 keras 버전(2.6)을 명시하니 해결이 되었다.
마지막으로 노트북 파일을 저장한다. 위에 untitled를 hello_deeplearning으로 바꾸면
hello_deeplearning.ipynb가 저장된다.
이 다음은 책 저자의 깃허브에 있는 딥러닝 코드를 실행해볼 것이다.
https://github.com/taehojo/deeplearning
위에 사이트에서 다운을 받을 것이다.
만약 이 운영체제가 순수한 리눅스였다면 git clone을 써야겠지만 이것은 wsl 즉 windows에서 다운을 받을 수 있다는 뜻이다.
Download ZIP을 한 후에 압축을 해제한 다음 wsl에
explorer.exe
를 입력 후 폴더를 wsl 폴더로 Copy & paste 해준다.
그 다음 다시
jupyter notebook
으로 실행한 다음 Ch02 딥러닝 핵심 미리보기에 들어간다.
여기서 cell을 누른 후 run all을 누른 후 결과를 확인한다.
성공적으로 된 것을 확인할 수 있다.
느낀 점 : 학기 중에 병행하려고 하니 조금 어려운 면도 있었다. 하지만 하는 방법만 알면 충분히 할만하다. 설명이 어렵다거나 난해한 부분이 있다면 댓글이나 메일을 보내주면 수정을 하겠다. Chips Chips 화이팅~!!