인공지능 74

[머신러닝 - 이론] NLP + Computer Vision

1. Common NLP Tasks (Mixed tasks (NLP + Computer Vision)) 일반적인 자연어 처리와 컴퓨터 비전을 합한 작업으로는 Text-Image search (retrieval) 텍스트가 왔을 때 이미지를 보여주거나, 이미지를 보여주면 텍스트를 매칭 시켜줌 이는 이미 존재한 것을 매칭 시키는 것 Image/video captioning 새로운 이미지에 자막 등 텍스트를 달아줌 Etc.. 이 있습니다. 이는 곧 이미지나 비디오를 해석해서 사람이 이해할 수 있는 언어로 표현하는 것입니다. 이때 중요한 두 가지 문제가 있습니다. 영상을 머신이 이해하는 것 그런 이해를 Natural Language로 표현하는 것 애초에 영상을 머신에게 이해시키는 것도 어려운데, 그런 이해를 NL..

[머신러닝 - 이론] NLP - Natural Language Processing (자연어 처리)

1. NLP (Natural Language Processing)이란? NLP란 Natural Language Processing의 약자로 자연어 처리를 뜻합니다. 이것은 언어학, Computer Science, AI의 하위 부분이며, 컴퓨터와 인간의 언어의 교집합입니다. 또한 컴퓨터가 어떻게 방대한 양의 자연어를 처리하고 분석하는지를 연구하는 분야입니다. 이 분야의 목적은 컴퓨터가 문장의 늬양스를 이해하는 것을 목표로 하며, 더 나아가 문서 안에 있는 정보나 insight를 정확하게 추출하는 것이 목적입니다. 다양한 NLP 작업들이 있지만, 대표적인 예시로 Text classfication, Machine translation, Text summarization, Language generation/u..

[머신러닝 - 이론] XAI for Deep Learning (딥러닝을 위한 설명 가능한 인공지능)

1. 전역 평균 풀링 (Global Average Pooling) GAP(Global Average Pooling)은 말 그대로 feature map 전체에 Average Pooling을 적용하는 것입니다. 즉, 각 샘플마다 하나의 숫자가 나오게 합니다. 이는 조금 파괴적인 연산이지만, 출력층의 연산에는 매우 유용합니다. GAP은 다음과 같은 연산으로 이루어집니다. \(a_k = ave(f^k) = \frac{1}{mn}\sum_{i = 1, m}^{}\sum_{j = 1, n}^{}f_{ij}^k\) 특징 맵 k번째의 화소의 평균값을 계산합니다. 따라서 k개의 결과가 나오게 되고, 이를 출력 층의 노드 c개와 연결하는 연산은 다음과 같습니다. q는 특징 맵의 개수입니다. \(s_c = \sum_{k =..

[머신러닝 - 이론] XAI - Explainable AI (설명 가능한 인공지능)

만약 여러분이 카드를 발급받을 때 거부당한다면, 은행 직원에게 이유를 물어볼 수 있습니다. 만약 여러분이 특정 질병을 처방 받는다면, 의사에게 이유를 물어볼 수 있습니다. 이처럼 인간은 이해할 수 있는 언어로, 도표나 수치를 동원해서 상대의 이해 수준에 따라 설명 수준을 조절합니다. 하지만 현재의 인공지능은 정반대입니다. 딥러닝으로 압도적이고, 인간을 뛰어넘는 성능을 제공하지만, 설명 기능이 약한 결정적 한계가 있고, 블랙박스라는 비난이 있습니다. 이는 왜 인공지능이 이러한 선택을 했는지에 대한 구체적인 설명이 어렵다는 말과 같습니다. 오히려 옛날의 규칙 기반 방법이나 결정 트리는 성능은 약하지만 설명 기능이 강합니다. 1. 결정 트리 결정 트리는 속이 훤히 보이는 유리 박스 모델입니다. 성능이 낮다는 ..

[머신러닝 - 이론] MCTS (Monte Carlo Tree Search) (몬테카를로 트리 탐색)

1. 몬테카를로 방법이란? 몬테카를로 방법은 난수를 생성하여 시뮬레이션하는 방법입니다. 이러한 방법을 이용해서 트리를 탐색하는 MCTS(Monte Carlo Tree Search)알고리즘이 개발되었습니다. 몬테카를로 방법에서는 자신의 상태에서 다음 상태를 랜덤으로 정합니다. 즉 자식 노드 중에 랜덤 하게 선택을 하고, 선택된 노드에서 플레이아웃을 생성해서 시뮬레이션을 합니다. 이때 승패가 정해질 때까지 랜덤하게 수를 선택해 나갑니다. 이후 승패가 결정되면 점수를 부여하고, 각 노드에서 승리 횟수/방문 회수를 갱신합니다. 마지막으로 승률이 가장 높은 수를 최종적으로 선택합니다. 즉, 자식 노드 중에 랜덤하게 선택 선택된 노드에서 시뮬레이션, 승패가 정해질 때까지 랜덤 하게 선택 승패가 정해지면 점수를 부여..

[머신러닝 - 이론] Search (탐색)

인공지능에서의 공간 탐색 능력은 대표적인 예시로 알파고가 있습니다. 현재 게임 상태에서 최적의 다음 상태를 탐색하는 것입니다. 즉 탐색이란 특정 상황에서 최적의 해를 찾기 위해 공간을 탐색하는 것이고, 공간은 문제의 solution이 될 수 있는 집합을 공간으로 가정하는 것입니다. 알고리즘의 BackTracking, Branch and Bound와 흡사하다고 보면 될 것 같습니다. 최적의 해를 찾기 위해 solution 혹은 경우의 수들을 공간으로 가정하고, 그 공간을 탐색하는 것이 탐색, search입니다. 예를 들면 어떻게 골을 넣을 수 있을까, 다음 수를 어떻게 둬야 게임에서 이길 수 있을까와 같이 특정한 목표를 가지고 탐색하는 것이라고 보면 되겠습니다. 이때 상태 공간(State Space)에 대..

[머신러닝 - 이론] GAN (Generative Adversarial Network) (생성적 적대 신경망)

GAN은 2개의 신경망이 적대적인 관계에서 학습하는 생성 모델입니다. 앞의 글에서 소개했던 웹사이트 주소 역시 GAN을 이용해서 생성한 사람의 얼굴입니다. 1. GAN 1.1 GAN의 원리 생성망 G와 분별망 D라는 두 개의 대립 관계의 신경망을 사용합니다. 이때 G는 D를 속일 수 있을 정도로 품질이 높은 가짜 샘플을 생성해야 하고, D는 G가 만든 가짜 샘플을 높은 정확률로 맞춰야 합니다. 이때 생성망과 분별망을 나눠서 설명하자면, 생성망의 가짜 샘플 생성 분별망이 속지 않음 - 생성망의 생성 방식을 바꿈 분별망이 속음 - 생성망은 그 방향으로 학습함 분별망의 가짜 샘플 분별 분별에 실패함 - 분별망의 분별 방식을 바꿈 분별에 성공함 - 학습을 강화함 이러한 상호작용을 통해 G와 D 둘 다 뛰어나지는..

[머신러닝 - 이론] Generative Model (생성 모델)

인간의 생성 능력을 예시로 들어보자면, 처음 가본 곳의 풍경을 그림으로 그립니다. 하지만 이 그림은 비슷하게 모방할 뿐, 정확히 같지는 않습니다. 의도적인 왜곡, 도구의 한계로 추상화하는 한계가 있습니다. 이를 인공지능에 적용하면 두 가지 모델이 나옵니다. 바로 분별 모델과 생성 모델입니다. 분별 모델은 얼굴, 표정을 보고 상대의 감정을 알아보는 등 이러한 능력을 말합니다. 인공지능은 분별 능력을 중심으로 발전해서, 앞에서 공부한 SVM, MLP, CNN, LSTM, RL 등 모두 분별 모델에 해당합니다. 생성 모델은 사람의 필체를 흉내 내는 인공지능 등이 대표적입니다. 딥러닝 기반 생성 모델인 GAN이 현재는 대표적인 생성 모델입니다. https://thispersondoesnotexist.com/ T..

[머신러닝 - Python] 손실함수 - 오차제곱합, 교차엔트로피 합 구현 (Loss Function - Sum of Squares Error, Cross Entropy Error Implementation)

import numpy as np def sum_squares_error(pred, target): # 오차제곱합 return 0.5 * np.sum((pred - target) ** 2) def cross_entropy(pred, target): # 교차 엔트로피 합 delta = 1e-7 # log 0을 계산할 수 없으므로, 아주 작은 값을 넣음 return -np.sum(target * np.log(pred + delta)) if __name__== "__main__": target = np.array([0, 0, 1, 0, 0]) # 2가 정답 pred1 = np.array([0.1, 0.05, 0.6, 0.05, 0.2]) # 2 예측 pred2 = np.array([0.6, 0.1, 0.05,..

[머신러닝 - Python] MNIST 데이터 예측 모델 구현 (MNIST Data Predict Model Implementataion)

해당 코드는 제 작업 공간 기준이므로 import 등이 안 맞을 수 있습니다. 이 점 유의해서 봐주시면 될 것 같습니다. import sys, os import numpy as np import pickle from PIL import Image sys.path.append(os.pardir) from mnist import load_mnist from Activation_Function.func import sigmoid, softmax def img_show(img): pil_img = Image.fromarray(np.uint8(img)) pil_img.show() def show_img(): # 첫 번째 이미지를 출력하는 함수 (input_train, target_train), (input_tes..