본문 바로가기
반응형

딥러닝14

9강. Torch의 Dataset과 Dataloader 클래스에 대하여 이번 챕터에서는 실제 딥러닝을 사용하여 모델링을 할 때 사용될 데이터를 어떻게 torch에 넣을수 있는지에 대하여 알아보자. 이 과정에서 우리가 알아야하는 클래스가 두개가 있는데, 바로 Dataset 클래스와 Dataloader 클래스이다. 예제 데이터 언제나 그렇듯, 본 공략집은 예제를 통해서 설명하는 것을 선호한다. 이번 챕터에서는 가상의 학생들의 공부시간과 연습한 문제 갯수, 그리고 시험의 합격 여부에 대한 자료를 만들어보았다. 아래 그림에서 볼 수 있듯이 공부 시간과 연습한 문제 갯수에 따라서 두 그룹으로 비교적 잘 나뉘어져 있다는 것을 알 수 있다. library(torch) library(tidyverse) set.seed(2021) # 독립변수 발생 x1 2021. 11. 8.
8강. 첫 torch 신경망 학습하기 저번 시간 우리는 토치에서 신경망을 정의하는 방법에 대하여 알아보았다. 오늘은 정의한 신경망을 어떻게 학습하는가에 대하여 알아보도록 하자. 학습 준비 - 데이터 만들기 필자는 유튜브에 R을 사용한 통계 관련 수업들을 올려놓았다. 이 수업에서 큰 축을 이루는 것 중 하나가 바로 회귀분석이다. 회귀분석은 주어진 데이터를 모델링할 때 신경망의 가장 큰 장점은 회귀 직선과 같은 선형 모형들이 가지는 한계를 넘어서, 비선형 모델링을 할 수 있게 해 준다는 것이다. 이러한 장점들을 잘 확인해보기 위해서 비선형 모델에서 관찰 값을 뽑아 모의 데이터로 만들어 보도록 하자. library(tidyverse) # 재현 가능을 위한 시드 고정 set.seed(2021) # x 자리 임의 생성 x 2021. 11. 8.
7강. torch_nn 모듈로 첫 신경망 정의하기 이제까지 torch의 자동 미분(auto grad) 기능과 순전파(forward propagation)에 대하여 알아보았다. 오늘은 드디어, torch 라이브러리에서 제공하는 함수들을 이용해서 순전파 챕터에서 텐서로 일일이 정의했던 기본 신경망을 라이브러리 함수를 통하여 만들어 보도록 하자. 딥러닝 라이브러리에서 제공하는 코드를 통하여 신경망을 정의하는 코드가 어떻게 간단해지는지 느껴보았으면 한다. 신경망 정의 (Custom nn Modules) 토치를 사용해서 신경망을 정의할 때 사용하는 함수가 있다. 바로 nn_module()이라는 함수인데, torch에서 신경망을 정의할 때, 이 함수를 사용해서 “클래스”를 만들어 정의한다! 왜 우리가 챕터 @ref(r6)에서 R6관련 클래스 내용을 그렇게도 공부했.. 2021. 11. 8.
6강. 미분 자동추적 기능 (Autograd) 에 대하여 이번 장에서는 torch 및 다른 딥러닝 라이브러리의 근본을 이루는 기능인 미분 자동 추적 기능에 대하여 알아보도록 하자. 예를 들어 설명하는 것을 좋아하므로, 이번 챕터에 쓸 예제 함수를 먼저 정의하자. 예제 함수 \(n\)개의 데이터 \(x_1, ..., x_n\)이 주어졌다고 할 때, 우리는 다음의 함수 \(f\)를 정의 할 수 있다. \[ f(\mu) = \frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2 \] 위의 함수는 다음과 같이 해석해 볼 수 있다. \(x\) 데이터에 담겨있는 정보를 단 하나의 지표 \(\mu\)로 압축해서 나타낸다고 할 때, 함수 \(f\)는 각 관찰값에 대한 오차들, \(x_i - \mu\),의 제곱의 평균을 나타낸다. 통계학에서는 나름 유명한 함수인.. 2021. 11. 8.
5강. 딥러닝 신경망의 구조 - 순전파 (Forward propagation) 이해하기 이제 처음으로 딥러닝의 밑바닥을 이루는 인공 신경망의 구조를 이해하는 시간이다. 앞으로 우리가 다룰 수많은 신경망 모델의 기반을 이루는 내용이므로, 정말 많은 시간을 투자해서 이해해두기 바란다. 투자한 시간에 비례하여, 추후에 복잡한 모델을 학습하는 시간을 단축시켜 줄 것이라 장담한다. 딥러닝의 시작점인 신경망(Neural network)을 공부하기 위해서, 앞으로 우리가 다룰 모델 중 가장 간단하면서, 딥러닝에서 어떤 일이 벌어지고 있는지 상상이 가능한 신경망을 먼저 학습하기로 하자. 우리가 오늘 예로 생각할 신경망은 다음과 같다. 위의 그림과 같은 신경망을 2단 신경망이라고 부른다. 일반적으로 단수를 셀 때 제일 처음 입력하는 층은 단수에 포함하지 않는 것에 주의하자. 각 녹색, 회색, 그리고 빨간색.. 2021. 10. 4.
3강. 텐서 이동시키기 - CPU tensor vs. GPU tensor 딥러닝(deep learning)에서는 네트워크의 구조가 조금만 복잡해져도, 필요한 계산량이 엄청나게 늘어나기 때문에 GPU는 사실 필수적이다. torch 패키지에서는 텐서를 다룰때에 현재 다루는 텐서가 어디에 저장되어있는가에 대한 일종의 태그를 달아놓는다. 다음의 코드를 살펴보자. a 2021. 10. 4.
2강. 텐서 (tensor) 들의 연산 배우기 지난 챕터에서 우리는 텐서가 행렬의 연산에 적용되는 %*%과 호환이 되지 않는 다는 것을 알게되었다. 이번 챕터에서는 텐서들의 연산에 대하여 알아보도록 하자. 토치 (torch) 불러오기 및 준비물 준비 토치 (torch) 를 불러오고, 이번 챕터에 사용될 텐서 A, B, 그리고 C를 준비하자. 지난 챕터에서 배운 난수를 이용한 텐서도 만들 예정이니 난수를 고정한다. library(torch) # 난수 생성 시드 고정 torch_manual_seed(2021) A 2021. 10. 4.
1강. 딥러닝 첫걸음, 텐서 (tensor) 만들기 torch와의 첫만남 torch패키지를 설치했으니, 한번 만나봐야한다. 다음의 명령어를 통하여 torch를 불러보자. library(torch) 텐서 (tensor) 만들기 텐서가 무엇이냐! 무언가 대단한 것처럼 보이나, 결국 우리가 R을 배웠을때 사용했던 matrix의 개념을 확장시킨 것이라고 생각하면 된다. 결국 다차원 행렬, 혹은 Array인 것이다. 우리가 많이 쓰는 행렬도 Array에 속하지만, 보통 Array라는 용어는 3차원 이상의 행렬을 암시한다. 이름부터 멋있는 딥러닝인데 다른 용어들이 Array같이 다른 패키지에서 사용되는 것들이랑 동일하면 격이 떨어지므로, 텐서 (tensor) 라고 붙였다. 토치 설명서에 따르면 텐서는 R의 Array와 비슷하나, GPU 계산에도 쓸 수 있다고 나와있.. 2021. 10. 4.
들어가며. torch 패키지 설치하기 딥러닝 공략.zip을 시작하며 한동안 미뤄뒀던 딥러닝 공략집 with R 시리즈를 다시 연재할 생각이다. 슬기로운 통계생활 스터디가 활발하게 진행되고 있고, 이제 torch 역시도 조금 안정된 모습이라서 딥러닝 구현을 하는데 머리가 아프다거나 생명이 단축되는 일이 줄어들었을 것이라고 생각하는 마음에서이다. 이제까지 R에서의 딥러닝은 Python의 라이브러리들을 reticulate 패키지를 이용하여 빌려온 형태였지만, torch for R 패키지는 C 라이브러리를 Torch를 기반으로 R을 wrapper 언어로서 사용하여 패키지를 만들었다. 즉, Torch + Python = PyTorch, Torch + R = RTorch가 되는 셈이다. torch 설치하기 설치 역시 간단한다. 여느 R패키지와 같이 i.. 2021. 10. 4.
신경망과 회귀분석 비교하기 (Neural Net vs. Regression) 저번 시간 우리는 파이토치에서 신경망을 정의하는 방법에 대하여 알아보았다. 오늘은 정의한 신경망을 어떻게 학습하는가에 대하여 알아보도록 하자. 오늘 우리의 목표는 다음과 같다. 정의된 신경망의 학습 방법 알기 Activation function에 따른 학습차이 비교 옵티마이져에 따른 학습차이 비교 히든 레이어 노드 갯수에 따른 학습차이 비교 위의 효과들을 알아보기 위하여 필자가 만든 학생들의 중간, 기말고사 데이터에 적용된 회귀분석 모델과의 비교를 시도하겠다. 학습 준비 - 데이터 import 이번 포스트에서는 필자가 만들어놓은 가상 데이터를 간단히 설명하면 다음과 같다. 30명 학생들의 정보가 들어있는 데이터이고, id, 성별, 중간고사, 기말고사 성적이 들어있는 데이터이다. 필자의 R을 사용한 통계학.. 2020. 7. 22.
파이토치, 신경망 정의 (Custom nn Modules) 저번 시간 우리는 파이 토치의 자동 미분 추적 기능에 대하여 알아보았다. 그리고 그 전 시간에는 R에서의 순전파에 대하여 알아보았다. 아직 안 보신 분들은 보고 오시는 것을 추천한다. Forward propagation, R 버전 오늘은 뉴럴 넷 (Neural network)을 공부하기 위해서 앞으로 우리가 다룰 뉴럴넷 중 가장 현실적이고, 어떤 일이 벌어지고 있는지 상상이 가능한 뉴럴 넷을 정의하는 것을 목표로 하자. 우리가 오늘 � statisticsplaybook.tistory.com 오늘은 파이토치에서 신경망(Neural net)을 어떻게 정의하는지에 대하여 알아보도록 하겠다. 파이토치 패키지, torch.nn 파이토치를 사용해서 신경망을 정의할 때 사용하는 패키지가 있다. 바로 torch.nn이.. 2020. 7. 20.
파이토치, 미분 자동추적 기능 (Autograd) 에 대하여 예제 함수 \(n\) 개의 데이터 \(x_1,..., x_n\)이 주어졌다고 할 때, 우리는 다음의 함수 \(f\)를 정의 할 수 있다. \[ y = f(\beta) = \frac{1}{n}\sum_{i=1}^{n}(x_i - \beta)^2 \] 위의 함수는 통계학에서는 유명한 함수인데, 왜냐하면 데이터의 평균, 즉 표본 평균이 위의 함숫값을 최소화시키는 함수이기 때문이다. 오늘은 이 함수를 통하여 파이 토치의 auto.grad 기능에 대하여 알아보고자 한다. 데이터 생성 파이토치를 불러 데이터를 생성한다. import torch # set seed torch.random.manual_seed(1234) ## data = torch.rand(10) * 10 data ## tensor([0.2898, 4.. 2020. 7. 18.
반응형