GPU 프로그래밍 - 개요
GPU Programming 1. 개요 이전엔 GPU라고 하면 그래픽 작업이나 게임할때 필요한 부품이었다. 하지만 최근에 AI가 급속도로 발달하면서 GPU의 필요성이 매우 높아지고 있다. 이러한 GPU를 사용하기 위해서는 Python의 Pytorch 나 Tensorflow를 이용하여 코딩할 수도 있겠지만 여기서는 C와 C++을 이용한 코드를 이용하...
GPU Programming 1. 개요 이전엔 GPU라고 하면 그래픽 작업이나 게임할때 필요한 부품이었다. 하지만 최근에 AI가 급속도로 발달하면서 GPU의 필요성이 매우 높아지고 있다. 이러한 GPU를 사용하기 위해서는 Python의 Pytorch 나 Tensorflow를 이용하여 코딩할 수도 있겠지만 여기서는 C와 C++을 이용한 코드를 이용하...
CUDA 환경 구성 CUDA 프로그래밍을 하기 위해서는 먼저 관련 드라이버를 설치해야한다. 이번 포스팅은 CUDA 프로그래밍을 하기 위한 관련 드라이버를 설치하고 개발 환경을 구성해보겠다. 1. 설치 1) 설치에 앞서 알아봐야할 것 먼저 내가 가지고 있는 그래픽 카드가 어떤 Compute capability 버전을 지원하는지 알아봐야한다. 아래의...
CPU 성능 측정 일반적으로 어떤 성능을 이야기할 때 아래의 지표로 이야기한다. 알고리즘 : 몇 개의 Operation을 실행하는지 프로그램 언어, 컴파일러, 아키텍처 : Operation 당 몇 개의 기계 명령어를 실행하는지 프로세서와 메모리 시스템 : Instruction을 실행하는데 얼마나 빠른지 IO/System : I/O O...
Deep learning 워드임베딩(Word Embedding) 1. 개요 단어를 벡터로 표현하는 방법으로, 단어를 밀집 표현(Dense Representation)으로 바꾸는 것을 말한다. 이 밀집 표현에 대해서 알기 위해서는 희소 표현(Sparse Representation)에 대해 먼저 알아야한다. 1) 희소표현(Sparse Represent...
Deep learning - Recurrent Neural Network 기본적인 형태의 RNN은 바닐라 RNN이라고 부른다. 바닐라 RNN의 경우 시퀀스가 길어질수록 성능이 떨어지는 문제를 보였다. 이 문제를 장기 의존성 문제(The problem of Long-Term Dependencies) 라고 하는데 장기 의존성 문제를 해결하기 위한 여러 ...
Deep learning 1. 과적합 1) 개요 이전에 역전파 과정에서 비용함수로 산출된 오류값에 근거하여 학습률을 곱하여 각 퍼셉트론의 가중치와 편향을 조정하는 것을 보였는데 특정 데이터가 다른 데이터와 동떨어져있다고 가정해보자. 그러면 해당 데이터가 보이는 양상과는 달리 기울기와 편향이 다르게 조정될 수 있다. 위와 같이 우리가 원하는 형태의...
Rust 문법 1. 제네릭 타입 제네릭을 사용하면 함수 시그니처나 구조체의 아이템에 다양한 구체적 데이터 타입을 사용할 수 있도록 정의할 수 있다. 총 4가지를 제네릭 데이터 타입으로 정의할 수 있다. 1) 함수 제네릭 함수를 정의할 때는, 함수 시그니처 내 매개변수와 반환 값의 데이터 타입 위치에 제네릭을 사용하면 된다. 제네릭 함수로 정의하면 ...
Deep learning 1. 역전파 1) 개요 Deep learning에서 말하는 학습이란 적절한 가중치 w와 적절한 편향 b를 찾는 것이다. 이를 찾기 위한 방법이 이전 포스팅에서 말했던 옵티마이저인데 역전파는 퍼셉트론으로 층층이 이루어진 계층을 역으로 타고 올라가면서 옵티마이저에 의한 최적화를 시행하는 것이라고 생각하면 된다. ※ 기본적인 옵...
Deep learning 1. 손실 함수 기대값과 실제값의 차이를 수치화하는 함수이다. 함수의 값이 작아지게 만드는게 딥러닝의 목표이며 이 값은 가중치 w와 편향 b값을 조정함으로써 찾게된다. 손실함수의 종류는 매우 많지만 그 중에 3가지만 이야기해보겠다. 1) 평균 제곱 오차(Mean Squared Error) 이전에 통계학 관련 포스팅 할때...
Deep learning 1. 순환신경망(Recurrent Neural Network, RNN) 1) 개요 앞서 입력층에서 출력층으로만 출력이 향했던 구조의 경우 피드포워드 신경망(Feed Forward Neural Network)라고 하는데, 이런 신경망의 경우 이전의 데이터에 대한 정보를 갖고 있지 않아 이전 데이터와 함께 순차적인 처리를 해야하는...