티스토리 뷰

728x90
반응형

목차

     

    PyTorch는 딥러닝에 사용되는 오픈소스 라이브러리이다.

     

    이름처럼 파이썬과 궁합이 좋으며, Numpy 등을 텐서로 가져올 수 있고 GPU 가속 기능(CUDA)을 지원한다.

     

    이 글에선 파이토치를 학습하기 위한 밑준비로, 사용하는 단어를 간단하게 정리하고 넘어가려고 한다.

     

    Pytorch

     

    파이토치라는 이름은 기존에 사용되던, Lua로 구성된 머신러닝 라이브러리 토치(Torch)에서 왔다.

     

    2015년 설립된 FAIR(Facebook AI Lab, 페이스북 인공지능 연구소)가 주도하여 개발을 진행,

     

    2016년 가을 처음으로 공개되었다.

     

    CUDA

     

    CUDA(Compute Unified Device Architecture)는 NVIDIA가 만든,

     

    GPGPU(General-Purpose computing on Graphics Processing Units, GPU 범용연산) 플랫폼이자 API 모델이다.

     

    쉽게 말하자면 그래픽카드를 CPU처럼 사용할 수 있게 만들어주며, 보통 하드웨어 가속이라고 하면 이 기능을 가리킨다.

     

    당연하게도 NVIDIA 그래픽카드 이외의 하드웨어에선 작동하지 않는다.

     

    Artificial neural network

     

    인공 신경망이란 인간 두뇌의 뉴런 구조를 본떠 만든 소프트웨어 모델이자 기술이다.

     

    그중에서도 인간의 시각, 청각을 주로 본떠 만든 알고리즘이라고 한다.

     

    Layers

     

    이 신경망은 일반적으로 입력, 출력, 그리고 그 사이의 은닉 층으로 구성된다.

     

    • 입력층: 데이터를 신경망에 입력하는 층
    • 출력층: 최종 결과를 출력하는 층
    • 은닉층: 둘 사이에 위치해 복잡한 학습이 이루어지는 층

    은닉층에 대해 조금 더 언급하고 넘어가자면, 워낙 복잡한 특징과 패턴을 학습하기 때문에

     

    보통 이 과정을 블랙 박스로 여기기도 한다. 그 이유는 대략 다음과 같다.

     

    1. 복잡성: 수백만개 이상의 파라미터를 가지기 때문에 동작을 명확하게 이해하기 힘들다.
    2. 고차원성: 1000차원 이상의 연산을 다루기도 하기 때문에 직관적으로 이해하기 힘들다.
    3. 비선형성: 이 부분이 중요한데, 활성화 함수와 같은 비선형 연산이 존재해 어떤 뉴런이 왜 활성화되었는지 분석하기가 힘들다.

    비선형성을 조금 더 다뤄보자

     

    Non-linearity

     

    비선형은 말 그대로 선형이 아니라는 뜻인데, 여기서 선형이란 특정 함수가 다른 함수의 합이나 상수곱으로 이루어지는 특징을 가리킨다.

     

    이 특징은 아무리 복잡한 선형 변환이라도 하나의 선형 변환으로 축약될 수 있다는 것을 가리키는데,

     

    결론만 말하자면 이런 성질은 신경망의 표현력을 제한하는 역할을 하게 된다.

     

    여기서 필요한 것이 비선형 함수이며, 뉴런의 출력에 적용해 복잡한 문제도 쉽게 풀 수 있도록 돕는다.

     

    이런 함수들을 활성화 함수(Activation Function)라고 하며, 대표적인 활성화함수로는 ReLU가 있다.

     

    • ReLU 함수
      f(x)=max(0,x)로 표현되는 굉장히 간단한 비선형 함수이다. 별거 아닌 함수 같지만 효율성, 활성화, 0 이상에서 미분값이 1이라는 특징들을 가지고 있어 딥러닝에서 널리 사용된다.

     

    Learning Paradigm

     

    딥러닝 역시 머신러닝에 속해 있기 때문에, 크게 다음과 같은 세 가지 방법론으로 학습을 한다.

     

    1. Supervised Learning (지도 학습)
      입력 데이터와 함께 목표/라벨이 제공되며, 모델은 이 라벨을 예측하도록 학습된다.
    2. Unsupervised Learning (비지도 학습)
      입력 데이터만 주어지며 모델은 데이터의 패턴을 찾도록 학습된다.
    3. Reinforcement Learning (강화 학습)
      주어진 환경과 상호작용하며 보상을 최대화하도록 학습한다.

     

    Tensor

     

    텐서는 한 마디로 하면 일반화된 벡터이자 행렬이다.

     

    라고 하면 PTSD가 올 것도 같지만, 파이토치에서 텐서는 좌표변환 등의 연산을 고려하지 않는(!)

     

    단순히 데이터를 담은 다차원 배열이다.

     

    따라서 주로 배열사이의 연산(덧셈, 곱셈, 행렬 분해, 미적분)에 초점이 맞춰져 있으며

     

    GPU 연산에 최적화 되어있기 때문에 대규모 데이터에 대한 연산을 효과적으로 실행할 수 있다.

     

    MNIST

     

    MNIST 데이터셋은 파이토치를 설치하면 가장 먼저 실습의 대상이 된다.

     

    그 실체는 손글씨로 쓴 숫자 데이터셋으로, 0부터 9까지의 숫자 이미지가 28x28 픽셀의 크기를 가진다.

     

    추가로 훈련 데이터는 60,000개, 테스트 데이터는 10,000개로 이루어져 있다.

     


    우선 여기까지만 정리해야겠다. 더 들어가려면 설명해야 할 것이 두 배는 불어나서..

     

    지금 당장은 다른 공부를 해야 해서 여유가 없지만, 이 기간이 지나고 나면 틈틈이 공부해야겠다.

     

    일단 설치는 하고 MNIST 실습도 해보았으니 두려울 건 없다.

     

    끝!

    반응형

    'Python > PyTorch' 카테고리의 다른 글

    [PyTorch]PyTorch 환경설정 및 MNIST 실습  (0) 2023.08.30
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/06   »
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    글 보관함