티스토리 뷰

Introduction to A.I. (4/5)

  • 인공지능을 공부할 때 알아두면 좋을 기초적인 내용을 정리한 자료입니다
    • 정확히는 딥러닝을 기반으로 하는 인공지능 에 대해서입니다
  • 추후 시간이 된다면 동영상으로도 제작해볼 생각입니다
  • 포스팅마다 50개까지의 이미지만 업로드할 수 있어, 이왕 나누는 김에 5부작으로 나누었습니다
    • (1/5) ... (5/5) 로 구분됩니다

(4/5)



  • 4장 Layer 에서는 퍼셉트론의 묶음인 레이어에 대해 알아봅니다
  • 이번 장의 내용은 이전 내용들과 대부분 독립적입니다
  • 따라서 이전 내용들을 소화하지 못했다 하더라도 이해할 수 있습니다


  • 레이어는 인공신경망의 각 단계를 의미합니다
    • 그 단계들은 연산 단위로 나뉩니다
    • 즉, 레이어를 지날 때마다 연산이 수행되는 것입니다
  • 일반적으로 인공신경망은 입력레이어로 시작해 출력레이어로 끝납니다
    • 이 두 레이어 사이에 있는 레이어를 은닉레이어라고 합니다
    • 입력레이어 → 처리되어야할 데이터를 포함
    • 출력레이어 → 처리된 데이터를 포함
    • 은닉레이어 → 처리되고 있는 데이터 및 가중치 변수를 포함
  • 레이어 개념은 인공신경망 시각화와 행렬화에 있어 중요합니다
    • 이에 대해서는 이후에 계속 설명하겠습니다
  • 간선은 특정 연산을 의미합니다 (주로 곱하기)
    • 입력레이어와 출력레이어를 제외하고 말이죠
    • 이 두 레이어로 들어가는 간선과 나가는 간선은 단순히 대입을 의미합니다
  • 하나의 노드로 여러 개의 간선이 겹쳐 들어가는 경우
    • (결과값들의) 더하기 연산을 의미합니다


  • 선형회귀 예제를 사용해 인공신경망을 레이어로 표현해보겠습니다
  • 우리의 예제에는 3개의 입출력 (데이터) 가 있었습니다
    • 그리고 각 데이터마다 1 개의 값을 가졌습니다
    • 따라서 입력과 출력의 결과는 3 \times 1 행렬로 표현될 수 있습니다
  • 우리는 입력값에 가중치를 곱했었죠
    • 이를 반영한다면 간선을 그려주고 가중치 변수를 표현해줍니다
  • 그러고 보니 바이어스도 있었습니다
    • 바이어스는 데이터와 무관하고 그저 가중치 변수의 값과 같습니다
    • 따라서 1 의 값을 가지는 노드를 간선으로 이어줍니다


  • 좌상단은 이전 슬라이드에서 살펴보았던 인공신경망을 레이어로 표현한 것입니다
    • 입력되는 데이터는 3 \times 1 이었지만 바이어스가 추가되어 3 \times 2 가 됩니다
    • 은닉레이어에서는 2 개의 노드에서 1 개의 노드로 연결되므로 2 \times 1 로 표현됩니다
    • 3 \times 2 행렬과 2 \times 1 행렬의 곱이므로 결과는 3 \times 1 행렬이며, 이는 출력레이어로 나갑니다
  • 우상단은 해당 인공신경망에서 진행되는 행렬곱을 자세하게 풀어쓴 것입니다
    • 두 가지 형태로 표현될 수 있음을 알 수 있습니다 (결과는 동일)
    • 레이어가 주어진다면 그것에서 행렬곱으로 인공신경망을 표현할 수 있습니다
  • 하단은 AND 논리게이트의 예제를 레이어로 표현한 것입니다
    • 도출 과정은 생략되었지만, 결과는 슬라이드의 내용과 같습니다
    • 활성화함수 (여기에서는 tanh()) 는 가독성을 위해 종종 생략되기도 합니다
  • 이제 왜 퍼셉트론이 인공신경망에서 각각의 노드를 지칭하는 말인지 알 수 있겠죠 ?
    • 각 레이어를 행렬로 표현했을 때, 그 행렬의 열 개수가 노드의 개수와 일치하기 때문입니다



  • 왜 레이어라는 개념을 사용해야할까요 ?
    • 그것은 병렬 컴퓨팅의 성능을 제대로 활용하기 위함입니다
  • 현대적인 GPU들은 3D 그래픽스를 지원합니다
    • 3D 그래픽스는 매우 많은 행렬 연산이 필요한 기술입니다
    • 그렇기 때문에 GPU들은 행렬 연산에 최적화되어있죠
  • 그리고 행렬 연산은 병렬처리가 가능한 종류의 문제입니다
    • 즉, GPU가 병렬처리에 특화된 하드웨어이기 때문에 이에 맞춰주는 것입니다
  • 그래서 우리는 인공신경망을 레이어로 작성하여 인공신경망을 시각화할 수도 있지만
    • 더 중요한 것은 행렬로 표현할 수 있는 토대를 마련하는 것입니다
    • 프로그램 코드에서 인공신경망을 행렬로 표현하기 위해서 말이죠
  • 우하단의 코드는 실제로 AND 논리게이트 문제를 풀기 위해 텐서플로우를 사용하는 코드입니다

    • AlexNet 이라는 인공신경망을 학습시키는 데에 소요된 시간의 비교표입니다
      • 파란색 막대기가 CPU로 진행한 결과이고
      • 초록색 막대기가 GPU로 진행한 결과입니다
    • CPU라고 병렬처리를 못하는 것은 아니지만 GPU와 구조자체가 다릅니다
      • 병렬처리와 GPU의 관계 및 그 내용은 OpenMP 또는 CUDA 를 참고해보세요


    • 지난 수 년간 많은 사람들이 다양한 레이어들을 만들었습니다
      • 곱하기나 더하기가 아닌 특수한 연산을 포함하는 레이어를 말이죠
      • 컨볼루션레이어의 경우 컨볼루션을 수행합니다 (놀랍게도)
    • 컨볼루션레이어는 더 나은 특징 추출을 제공합니다
      • 근래에는 사진을 비롯한 파일들의 크기가 매우 커지고 있습니다
      • 이 상황에서 파일 원본을 데이터로 학습시킬 경우, 매우 오랜 시간이 걸릴 수 있는데요
      • 많은 사람들이 파일의 용량을 줄이면서도 특징은 유지하는 방법으로 이 레이어를 사용합니다
    • 이러한 특징 때문에 영상처리와 특징탐색에 사용됩니다
      • 실제로 딥마인드의 알파고는 특정 위치의 점수를 책정하기 위해 컨볼루션레이어를 사용했습니다


    • 리커런트레이어는 이전 출력값을 입력값으로 받는 레이어입니다
      • 최종적인 입력값은 데이터와 이전 출력값의 합 또는 합과 유사한 형태로 결정됩니다
      • 처음 입력값을 받을 때에는 당연히 출력된 게 없으므로 이 경우 이전 출력값을 0 또는 빈 값으로 간주합니다
    • 리커런트레이어는 시간적으로 연속적인 데이터처리를 제공합니다
      • 동영상 및 문장 등이 대표적인 시간연속적 데이터입니다
      • 이러한 데이터에서 현재 상황을 처리하려면 이전 상황이 필요합니다
      • 리커런트레이어는 인공신경망이 과거 입력을 기억할 수 있도록 합니다
    • 이러한 특징 때문에 번역 또는 문맥분석에 사용됩니다
      • 구글이나 네이버 등이 번역기에 사용합니다



    • 세상에는 더 많은 레이어들이 있습니다
      • 또한 더욱 더 증가할 것입니다
    • 우리가 살펴보지않은 레이어들은 매우 많죠
      • 하지만 그들 중 대부분은 문서를 읽어야할 정도로 복잡합니다
      • 그렇기 때문에 스스로 학습해야할 것입니다
      • 위에서 알아본 레이어는 정말 자주 사용되는 2 가지만 알아본 것입니다
    • (어떤 레이어를 사용할 경우) 그 레이어가 자신의 상황에 적절한지 판단해야합니다
      • 딥러닝 (을 통한 인공지능 구현) 은 시간이 많이 소요되기 때문입니다
      • 자신의 상황에 적절한 레이어를 고르지 못한다면, 이상한 결과를 얻는 등 시간을 낭비할 것입니다
    • (인기있는) 대부분의 레이어들은 인공지능 프레임워크에 구현되어있습니다
      • 라이브러리처럼 제공되며 쉽게 사용할 수 있죠
    • 만약 현존 레이어들에 대한 간략한 요약을 보고 싶다면 아래 링크를 참고하세요

    이후 내용은 (5/5) 에서 이어집니다
    감사합니다


    'Computer Science > Artificial Intelligence' 카테고리의 다른 글

    tensorflow-in-windows (1/2)  (0) 2019.05.31
    Introduction to A.I. (5/5)  (0) 2018.11.01
    Introduction to A.I. (3/5)  (0) 2018.10.19
    Introduction to A.I. (2/5)  (0) 2018.10.13
    Introduction to A.I. (1/5)  (0) 2018.10.07
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    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 31
    글 보관함