티스토리 뷰
Introduction to A.I. (4/5)
- 인공지능을 공부할 때 알아두면 좋을 기초적인 내용을 정리한 자료입니다
- 정확히는
딥러닝을 기반으로 하는 인공지능
에 대해서입니다
- 정확히는
- 추후 시간이 된다면 동영상으로도 제작해볼 생각입니다
- 포스팅마다 50개까지의 이미지만 업로드할 수 있어, 이왕 나누는 김에 5부작으로 나누었습니다
(1/5) ... (5/5)
로 구분됩니다
(4/5)
- 4장
Layer
에서는 퍼셉트론의 묶음인 레이어에 대해 알아봅니다 - 이번 장의 내용은 이전 내용들과 대부분 독립적입니다
- 따라서 이전 내용들을 소화하지 못했다 하더라도 이해할 수 있습니다
- 레이어는 인공신경망의 각 단계를 의미합니다
- 그 단계들은 연산 단위로 나뉩니다
- 즉, 레이어를 지날 때마다 연산이 수행되는 것입니다
- 일반적으로 인공신경망은 입력레이어로 시작해 출력레이어로 끝납니다
- 이 두 레이어 사이에 있는 레이어를 은닉레이어라고 합니다
- 입력레이어 → 처리되어야할 데이터를 포함
- 출력레이어 → 처리된 데이터를 포함
- 은닉레이어 → 처리되고 있는 데이터 및 가중치 변수를 포함
- 레이어 개념은 인공신경망 시각화와 행렬화에 있어 중요합니다
- 이에 대해서는 이후에 계속 설명하겠습니다
- 간선은 특정 연산을 의미합니다 (주로 곱하기)
- 입력레이어와 출력레이어를 제외하고 말이죠
- 이 두 레이어로 들어가는 간선과 나가는 간선은 단순히 대입을 의미합니다
- 하나의 노드로 여러 개의 간선이 겹쳐 들어가는 경우
- (결과값들의) 더하기 연산을 의미합니다
- 선형회귀 예제를 사용해 인공신경망을 레이어로 표현해보겠습니다
- 우리의 예제에는 3개의 입출력 (데이터) 가 있었습니다
- 그리고 각 데이터마다 개의 값을 가졌습니다
- 따라서 입력과 출력의 결과는 행렬로 표현될 수 있습니다
- 우리는 입력값에 가중치를 곱했었죠
- 이를 반영한다면 간선을 그려주고 가중치 변수를 표현해줍니다
- 그러고 보니 바이어스도 있었습니다
- 바이어스는 데이터와 무관하고 그저 가중치 변수의 값과 같습니다
- 따라서 의 값을 가지는 노드를 간선으로 이어줍니다
- 좌상단은 이전 슬라이드에서 살펴보았던 인공신경망을 레이어로 표현한 것입니다
- 입력되는 데이터는 이었지만 바이어스가 추가되어 가 됩니다
- 은닉레이어에서는 개의 노드에서 개의 노드로 연결되므로 로 표현됩니다
- 행렬과 행렬의 곱이므로 결과는 행렬이며, 이는 출력레이어로 나갑니다
- 우상단은 해당 인공신경망에서 진행되는 행렬곱을 자세하게 풀어쓴 것입니다
- 두 가지 형태로 표현될 수 있음을 알 수 있습니다 (결과는 동일)
- 레이어가 주어진다면 그것에서 행렬곱으로 인공신경망을 표현할 수 있습니다
- 하단은 AND 논리게이트의 예제를 레이어로 표현한 것입니다
- 도출 과정은 생략되었지만, 결과는 슬라이드의 내용과 같습니다
- 활성화함수 (여기에서는 ) 는 가독성을 위해 종종 생략되기도 합니다
- 이제 왜 퍼셉트론이 인공신경망에서 각각의 노드를 지칭하는 말인지 알 수 있겠죠 ?
- 각 레이어를 행렬로 표현했을 때, 그 행렬의 열 개수가 노드의 개수와 일치하기 때문입니다
- 그것은 병렬 컴퓨팅의 성능을 제대로 활용하기 위함입니다
- 3D 그래픽스는 매우 많은 행렬 연산이 필요한 기술입니다
- 그렇기 때문에 GPU들은 행렬 연산에 최적화되어있죠
- 즉, GPU가 병렬처리에 특화된 하드웨어이기 때문에 이에 맞춰주는 것입니다
- 더 중요한 것은 행렬로 표현할 수 있는 토대를 마련하는 것입니다
- 프로그램 코드에서 인공신경망을 행렬로 표현하기 위해서 말이죠
AlexNet
이라는 인공신경망을 학습시키는 데에 소요된 시간의 비교표입니다- 파란색 막대기가 CPU로 진행한 결과이고
- 초록색 막대기가 GPU로 진행한 결과입니다
- CPU라고 병렬처리를 못하는 것은 아니지만 GPU와 구조자체가 다릅니다
- 병렬처리와 GPU의 관계 및 그 내용은
OpenMP
또는CUDA
를 참고해보세요
- 병렬처리와 GPU의 관계 및 그 내용은
- 지난 수 년간 많은 사람들이 다양한 레이어들을 만들었습니다
- 곱하기나 더하기가 아닌 특수한 연산을 포함하는 레이어를 말이죠
- 컨볼루션레이어의 경우 컨볼루션을 수행합니다 (놀랍게도)
- 컨볼루션레이어는 더 나은 특징 추출을 제공합니다
- 근래에는 사진을 비롯한 파일들의 크기가 매우 커지고 있습니다
- 이 상황에서 파일 원본을 데이터로 학습시킬 경우, 매우 오랜 시간이 걸릴 수 있는데요
- 많은 사람들이 파일의 용량을 줄이면서도 특징은 유지하는 방법으로 이 레이어를 사용합니다
- 이러한 특징 때문에 영상처리와 특징탐색에 사용됩니다
- 실제로 딥마인드의 알파고는 특정 위치의 점수를 책정하기 위해 컨볼루션레이어를 사용했습니다
- 리커런트레이어는 이전 출력값을 입력값으로 받는 레이어입니다
- 최종적인 입력값은 데이터와 이전 출력값의 합 또는 합과 유사한 형태로 결정됩니다
- 처음 입력값을 받을 때에는 당연히 출력된 게 없으므로 이 경우 이전 출력값을 또는 빈 값으로 간주합니다
- 리커런트레이어는 시간적으로 연속적인 데이터처리를 제공합니다
- 동영상 및 문장 등이 대표적인 시간연속적 데이터입니다
- 이러한 데이터에서 현재 상황을 처리하려면 이전 상황이 필요합니다
- 리커런트레이어는 인공신경망이 과거 입력을 기억할 수 있도록 합니다
- 이러한 특징 때문에 번역 또는 문맥분석에 사용됩니다
- 구글이나 네이버 등이 번역기에 사용합니다
- 세상에는 더 많은 레이어들이 있습니다
- 또한 더욱 더 증가할 것입니다
- 우리가 살펴보지않은 레이어들은 매우 많죠
- 하지만 그들 중 대부분은 문서를 읽어야할 정도로 복잡합니다
- 그렇기 때문에 스스로 학습해야할 것입니다
- 위에서 알아본 레이어는 정말 자주 사용되는 가지만 알아본 것입니다
- (어떤 레이어를 사용할 경우) 그 레이어가 자신의 상황에 적절한지 판단해야합니다
- 딥러닝 (을 통한 인공지능 구현) 은 시간이 많이 소요되기 때문입니다
- 자신의 상황에 적절한 레이어를 고르지 못한다면, 이상한 결과를 얻는 등 시간을 낭비할 것입니다
- (인기있는) 대부분의 레이어들은 인공지능 프레임워크에 구현되어있습니다
- 라이브러리처럼 제공되며 쉽게 사용할 수 있죠
- 만약 현존 레이어들에 대한 간략한 요약을 보고 싶다면 아래 링크를 참고하세요
이후 내용은 (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
링크
TAG
- visual-studio
- JIT
- csharp
- Docker
- CAFFE
- shader
- cuDNN
- Slack
- visualstudio
- Game
- CUDA
- tensorflow
- unity
- WindowAPI
- git
- lib
- A.I.
- dll
- vscode
- PopeTV
- Hashtable
- pclaf
- DirectX
- NOX
- Python
- C/C++
- ATOM
- Anaconda
- windows
- unreal
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함