728x90
반응형

분류 전체보기 193

[ML] 선형 회귀 (Linear Regression) 정리 & Pytorch 구현

선형 회귀(Linear Regression) 선형 회귀는 주어진 데이터로부터 x와 y의 관계를 가장 잘 나타내는 직선을 그리는 것을 의미한다. 여기서 x는 독립적으로 변할 수 있는 독립 변수, y는 x 값에 의해 종속적으로 결정되므로 종속 변수에 해당한다. 1. 단순 선형 회귀(Simple Linear Regression) 독립 변수 x가 1개이면 단순 선형 회귀이다. 직선의 방정식에서 기울기를 머신러닝에서는 w 가중치(weight)라고 하며, 별도로 더해지는 값 b를 편향(bias)라고 한다. 2. 다중 선형 회귀 분석(Multiple Linear Regression Analysis) 독립 변수 x가 2개 이상이면 다중 선형 회귀이다. 다수의 요소 x1, x2, ..., xn을 가지고 y 값을 예측한다..

AI/머신러닝 2023.04.09

[Pytorch] 데이터 로드하기 - Dataset, DataLoader 정리

딥러닝을 포함한 머신러닝의 근원은 데이터이다. 데이터의 수집, 가공, 사용 방법에 따라 모델 성능이 크게 달라질 수 있으며 데이터의 형태는 매우 다양하기 때문에 데이터를 잘 불러오는 것은 가장 중요한 단계 중 하나이다. Pytorch에서는 데이터를 좀 더 쉽게 다룰 수 있도록 데이터셋(Dataset)과 데이터로더(DataLoader)를 제공한다. 이를 사용하면 미니 배치 학습, 데이터 셔플(shuffle), 병렬 처리까지 간단히 수행할 수 있다. 1. TensorDataset 사용하여 데이터 로드하기 우선 텐서를 입력받아 Dataset의 형태로 변환해주는 TensorDataset을 사용해볼 것이다. TensorDataset은 기본적으로 텐서를 입력으로 받는다. import torch import torc..

AI/딥러닝 2023.03.28

[Pytorch] Autograd 자동 미분 및 역전파 적용하기

이번 글에서는 Pytorch의 Autograd를 활용해 자동 미분(Auto differentitation)하는 방법과 이전 게시글에서 이론을 살펴보았던 경사하강법의 역전파 과정을 Pytorch로 구현하여 편미분을 쉽게 진행하는 방법을 알아볼 것이다. 이전 게시글 https://daeunnniii.tistory.com/189 역전파와 경사하강법 쉽게 이해하기 역전파(BackPropagation)는 한마디로 신경망 모델에서 오차를 이용하여 가중치를 업데이트하는 방법이다. 1. 인공 신경망의 이해 예제로 사용할 인공 신경망은 다음과 같이 입력층, 은닉층, 출력층 3 daeunnniii.tistory.com 인공 신경망을 최적화하는 과정에서 미분은 필수적인 요소이다. Pytorch에서는 최적화 과정인 역전파(B..

AI/딥러닝 2023.03.26

역전파와 경사하강법 쉽게 이해하기

역전파(BackPropagation)는 한마디로 신경망 모델에서 오차를 이용하여 가중치를 업데이트하는 방법이다. 1. 인공 신경망의 이해 예제로 사용할 인공 신경망은 다음과 같이 입력층, 은닉층, 출력층 3개의 층을 갖고 각 layer는 2개의 뉴런으로 구성된다. 은닉층과 출력층의 모든 뉴런은 활성화 함수로 시그모이드 함수를 사용한다. 은닉층과 출력층의 변수 z는 이전 층의 모든 입력이 각각 가중치와 곱해진 값들을 모두 더한 가중합을 의미한다. 이 값은 아직 시그모이드 함수를 거치지 않은 상태이다. z의 우측 | 를 지나서 존재하는 변수 h 또는 o는 z가 활성화 함수인 시그모이드 함수를 지난 후의 값으로 각 뉴런의 출력값을 의미한다. * 시그모이드 함수는 활성화 함수 중 하나로 아래와 같이 0에서 1 ..

AI/딥러닝 2023.03.26

[Pytorch] 텐서(Tensor) 다루기

1. Pytorch 패키지의 기본 구성 1) torch: 메인 네임스페이스. 텐서 등 다양한 수학 함수가 포함되어있으며 numpy와 유사한 구조를 가진다. 2) torch.autograd: 자동 미분을 위한 함수들이 포함. 자동 미분자동 미분의 on/off를 제어하는 콘텍스트 매니저(enable_grad/no_grad)나 자체 미분 가능 함수를 정의할 때 사용하는 기반 클래스인 'Function' 등이 포함되어 있다. 3) torch.nn: 신경망을 구축하기 위한 다양한 데이터 구조나 레이어 등이 정의되어있다. 예를 들어 RNN, LSTM과 같은 레이어, ReLU와 같은 활성화 함수, MSELoss와 같은 손실 함수들이 있다. 4) torch.optim: 확률적 경사 하강법(Stochastic Gradi..

AI/딥러닝 2023.03.26

Ansible 개념과 구조 정리

Ansible이란? 기존에는 쉘 스크립트에 패키지 설치, 수정된 설정파일 등을 나열하고 스크립트를 실행하여 동일한 환경의 리눅스를 수정했다. 하지만 데이터 센터 중심의 인프라 환경에서 클라우드 환경으로 변화하고, 관리해야 할 서버의 숫자가 급격하게 증가하며 동시에 많은 서버에 동일한 환경을 배포해야하는 경우가 많이 있고 이는 쉘 스크립트로 불가능했다. 이를 해결하기 위해 IaC(Infrastructure as a Code)가 등장했고, IaC은 컴퓨터의 인프라 구성을 소프트웨어를 개발하는 것처럼 코드로 작성하는 것을 의미한다. Ansible도 이러한 IaC 개념이 도입되어 자동화 도구를 이용하여 인프라의 설정을 코드로 작성하고 이를 모든 서버에 배포함으로써 특정 환경을 동일하게 유지할 수 있도록 도와준다..

ETC/Ansible 2023.01.24

[React] redux-persist를 통한 Store 유지하기

redux-persist redux toolkit만 적용했을 경우, 페이지를 이동하거나 새로고침 시 Store 값이 초기화된다. redux-persist 라이브러리를 활용하면 LocalStorage와 SessionStorage의 storage를 redux에서 사용할 수 있게 된다. Config.js LocalStorge 사용 시 "redux-persist/lib/storage" SessionStorage 사용 시 "redux-persist/lib/storage/session" 에서 import persisConfig = {} : 새로운 persist 선언 key : reducer의 어느 지점에서부터 데이터를 저장할 것 인지 storage : 웹의 localStorage 혹은 sessionStorage 지..

Web/React 2023.01.24

Redux-toolkit으로 상태관리하기

사용 전 준비 # yarn 사용 시 yarn add redux react-redux @reduxjs/toolkit # npm 사용 시 npm install redux react-redux @reduxjs/toolkit Redux이란? 먼저 Redux는 상태 관리 라이브러리 중 하나로 현재까지 가장 많이 쓰이고 있다. Redux를 사용하지 않으면 한 컴포넌트의 함수를 props 형태로 다른 컴포넌트로 전달하고, 또 그것을 props 형태로 다른 컴포넌트로 전달하는 과정을 반복해야한다. 이런 복잡한 구조는 불필요한 props 전달로 유지보수 또는 props 추적을 힘들게하는 Props drilling을 야기한다. 상태 관리 라이브러리는 이러한 문제들을 해결하기 위해 고안되었다. Redux는 Reducer와 ..

Web/React 2023.01.24

React Hooks 정리

React Hook이란? React Hook이란, React 버전 16.8부터 React 요소로 새로 추가되었음. Hook이 나오기 전까지는 State 값 접근, lifecycle 구현을 사용하기 위해 Class 컴포넌트 선언을 해줘야했음. 또한 Function 컴포넌트는 한번 호출되고 메모리상에서 사라져 State 값 접근과 lifecycle 구현이 불가능. 기존의 class component를 사용하는 React 방식 import "./style"; import { Component, render } from "preact"; export default class App extends Component { state = { count: 0 }; modify = (n) => { this.setState..

Web/React 2023.01.24

[프로그래머스] 입국 심사 문제 풀이 : 이분탐색 알고리즘

문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성해주세요. 제한사항 입국심사..

728x90
반응형