머신러닝 44

[머신러닝 - 이론] Computer Vision의 연구 분야와 대표적인 모델 - Classification, Object Detection (Computer Vision Research Fields and Representative Models - Classification, Object Detection)

1. Classification 말 그대로 해당 Image Object가 어떤 물체인지 분류하는 작업입니다. 대표적인 모델로는 EfficientNet이 있습니다. EfficientNet의 점수이며, 상대적으로 파라미터가 적음에도 불구하고 높은 정확도를 보이고 있습니다. EfficientNet의 구조는 다음과 같습니다. a를 보면 기본적인 모델의 구조입니다. 이때 EfficientNet은 다양한 테스트를 해봤는데, 기본적으로 채널 수를 더욱 늘려도 보았고, 깊이도 더 깊이 해봤고, 해상도도 변경했었습니다. 마지막으로 모두 혼합해서 테스트도 했습니다. 다양한 테스트 이후 좋은 구조를 합친 것이 바로 EfficientNet입니다. 가장 중요한 것은 결과가 아니라 과정에서 이 사람들이 왜 이런 생각을 했을까? ..

[머신러닝 - 이론] Computer Vision

1. Computer Vision이란? AI의 한 분야이고, 이미지, 비디오 혹은 visual input에서 의미 있는 정보를 추출하는 분야입니다. 또한 해당 정보에 기반해서 행동을 취하거나 추천을 하는 등의 분야입니다. 이 분야의 목적은 NLP와 비슷하게 컴퓨터에게 이미지를 이해시키는 것이 목적이며, 정보와 insight를 정확하게 추출하는 것이 목적입니다. 이때 이미지는 NLP와 다르게 매우 다양하며, VR, 적외선 레이더 등 매우 많은 이미지가 있습니다. 이때 이미지에서 현재 상황을 보거나, 어디에 무엇이 있는지, 어떤 행동이 일어나고 있는지, 어떤 행동을 예상하는지, 어떤 일이 발생할지에 대해 discover합니다. Computer Vision이 영향을 끼칠 수 있는 분야는 매우 많습니다. 기본적..

[머신러닝 - 이론] 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..

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

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

[머신러닝 - 이론] 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..

[머신러닝 - 이론, Python] 활성화 함수 - 소프트맥스 함수 구현 (Activation Function - Softmax Function Implementation)

머신러닝에서 출력은 분류(Classfication)와 회귀(Regression)가 있습니다. 분류는 해당 데이터가 어느 클래스에 속하느냐의 문제이고, 회귀는 해당 데이터의 연속적인 수치를 예측하는 문제입니다. 회귀의 경우 항등 함수를 이용해서 입력 신호를 그대로 출력해도 되지만, 분류의 경우에는 보통 소프트맥스 함수를 사용합니다. 소프트맥스 함수는 다음과 같습니다. \(y_k = \frac{exp(a_k)}{\sum_{i = 1}^{a} exp(a_i)}\) 따라서 분모는 모든 입력 신호를 exp()해서 더한 값이고, 분자는 원하는 k의 입력신호 a_k의 지수 함수가 됩니다. 따라서 코드로 구현하면 다음과 같습니다. import numpy as np def softmax(a): exp_a = np.exp..