목록AI (114)
기록하는삶
https://mlflow.org/ MLflow - A platform for the machine learning lifecycle An open source platform for the end-to-end machine learning lifecycle mlflow.org MLflow는 머신러닝 실험을 보다 쉽고 효율적으로 진행하며 관련된 로그와 파일을 저장하고, 이를 공유해 협업하거나 배포할 수 있는 장치를 제공하는 오픈소스다. MLflow는 기존의 머신러닝 실험이 추적하기 어렵고, 코드를 재현하기 어려우며, 모델을 패키징하고 배포하는 방법이 어렵고, 모델을 관리하기 위한 중앙 저장소가 없다는 문제를 해결하기 위해 만들어졌으며, 2018년 출시 이후 이용자 수가 빠르게 늘며 가파른 성장을 보이고 ..
위상 정렬은 유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것을 의미하는데, 대학의 선수과목 구조가 대표적인 예이다. 정렬의 순서는 여러 가지가 나올 수 있으며, 비순환 그래프일 때만 정렬이 가능하다. 위상 정렬 알고리즘의 동작 원리 및 순서는 아래와 같다. 선행되는 노드가 없는 노드들을 먼저 순서에 삽입하는 것을 기본 원리로 한다. ① 자기 자신을 가리키는 간선의 수를 진입 차수라 할 때, 진입 차수가 0인 모든 노드를 큐에 삽입한다. ② 큐에서 원소 하나를 꺼내어, 순서 배열에 이를 삽입하고 해당 노드가 가진 모든 간선을 삭제한다. 여기서 삭제한다는 것은 해당 간선으로 발생된 진입 차수를 없애는(-1) 것을 말한다. 이때 진입 차수가 줄어드는 노드의 진입 차수가 0이 된..
스패닝 트리(spanning tree)는 신장 부분 그래프(spanning subgraph)의 한 종류이다. 신장 부분 그래프는 원본 그래프의 모든 꼭짓점을 포함하는 부분 그래프로, 생성 부분 그래프라고도 한다. 이때 해당 부분 그래프가 트리라면 스패닝 트리 혹은 최소 신장 트리라고 부르고, 간선의 가중치가 동일하지 않은 경우에 한하여 가장 적은 가중치의 합으로 표현되는 스패닝 트리를 최소 스패닝 트리라 부른다. 즉, 최소 비용으로 모든 노드가 연결될 수 있도록 만드는 트리가 최소 스패닝 트리다. 아래의 사진이 그 예가 되겠다. 최소 스패닝 트리를 구할 수 있는 대표적인 알고리즘이 크루스칼 알고리즘과 프림 알고리즘이다. [크루스칼(Kruskal) 알고리즘의 동작 원리 및 순서] 1. 전체 간선을 가중치 ..
Unix 기반의 프로그램을 명령어로 실행할 때는 아래처럼 3개의 스트림이 생성된다. [스트림(Stream) 종류] - stdin : 0으로 표현, 입력(비밀번호, 커맨드 등) - stdout : 1로 표현, 출력 값(터미널에 나오는 값) - stderr : 2로 표현, 디버깅 정보나 에러 출력 위 stream 중 stdout을 적절히 다른 파일이나 스트림, 프로그램에 활용하는 방법이 redirection과 pipe다. 1) Redirection 프로그램의 출력(stdout)을 다른 파일이나 스트림으로 전달하는 것을 말한다. 대표적으로 덮어쓰기(Overwrite)와 맨 아래 추가하기(Append)가 있다. ① 덮어쓰기(Overwrite, >) 이전 출력에 대해 파일이 있다면 덮어쓰고, 없다면 생성 후 저장..
리눅스는 1991년 리누스 토스발스가 처음 공개한 오픈소스 유닉스 계열 운영체제로, Window와 Mac과 함께 사실상 3대장 OS이다. 무료인데다 누구나 버전을 만들고 공개할 수 있다는 장점이 있어 널리 사용되며 특히 서버와 관련된 작업에서 빈번하게 사용된다고 한다. CLI(Command Line Interface)와 GUI(Graphic User Interface)가 모두 사용가능하지만 아무래도 CLI를 원활히 사용하기 위한 Shell Command를 익혀둘 필요가 있을 것 같아 정리해본다. 위처럼 수도 없이 많은 배포판이 존재하는데 대표적으로는 Debian, Ubuntu, Redhat, CentOS가 많이 사용된다고 한다. Oracle VirtualBox와 같은 가상머신 위에 설치하거나 윈도우의 경..
https://github.com/philferriere/cocoapi#egg=pycocotools&subdirectory=PythonAPI GitHub - philferriere/cocoapi: Clone of COCO API - Dataset @ http://cocodataset.org/ - with changes to support Windows build and Clone of COCO API - Dataset @ http://cocodataset.org/ - with changes to support Windows build and python3 - GitHub - philferriere/cocoapi: Clone of COCO API - Dataset @ http://cocodataset.or..
AI를 활용한 서비스의 개발 과정에서 문제를 잘 정의하고, 해결하려는 해당 문제를 구체화하는 것은 가장 우선시되는 중요한 업무다. 이것이 잘 진행되었다는 전제 하에, 이후 프로젝트 설계 단계와 관련 용어들에 대해서 정리해본다. 1) 머신러닝 문제 타당성 확인 기계학습 모델을 서비스에 포함시키는 것이 가치있는 선택이기 위해서는 여러가지 조건이 붙는다. 바꾸어 말하면, 모든 상황에 기계학습 모델 혹은 AI가 활용된 솔루션이 문제를 해결하는 좋은 방법은 아니다. 따라서 아래의 사항들을 확인하고 따져본 후 기계학습의 적용 여부를 결정하는 것이 좋다. [① 데이터 존재 유무] 머신러닝은 데이터로부터 특정 패턴을 학습하는 것이므로, 데이터 없이는 불가능하다. 현실적으로 목적에 꼭 맞는 양과 label을 가진 데이터..
Facet은 사전적 정의로는 다면체의 한 면을 일컫는 말로, 데이터 시각화해서는 화면을 분할하는 것을 말한다. 경우에 따라 여러 개의 그래프를 한번에 그려놓는 것이 전달력을 위해 필요할 수 있는데, matplotlib을 활용할 때는 아래의 방법들로 진행할 수 있다. matplotlib과 numpy는 설치해주자. import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt 1) add_subplot fig = plt.figure(figsize=(8,6)) ax1 = fig.add_subplot(221) ax2 = fig.add_subplot(2,2,2) ax3 = fig.add_subplot(223) ax4 = fig.add_sub..
1) Data 이미지, 음성, 텍스트, 영상 등 목적에 따라 필요한 데이터가 달라지게 된다. 이미지의 경우도 아래처럼 그 목적에 따라 서로 다른 종류의 labeling을 필요로하기도 한다. 2) Model input data를 내가 원하는 목적에 맞는 output data로 맵핑하는 일종의 프로그램으로, 형 변환과 각종 연산 등의 집합체이다. 동일한 input data와 아키텍쳐가 주어지더라도 그 목적에 따라 그리고 그에 맞게 설정한 loss function에 따라 그 내부 파마티더들이 달라질 수 있다. 아래와 같은 예시들이 있다. 3) Loss(Loss function) 모델을 통해 이루고자 하는 목적의 proxy로, 목적 함수(objective function)라고도 부르며 보통 이를 최소화하는 방향..
1000개 카테고리의 이미지에 대해 머신러닝을 활용한 Classification/Detection/Localization/Segmentation 성능을 비교하는 대회인 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)는 매년 가장 우수한 성능을 보인 모델을 선정한다. 이 글에서는 시기별로 해당 대회에서, 그 중에서도 Classification에 대해 우수한 성적을 보이며 이름을 알린 모델들을 간략하게 살펴보며, CNN이 어떻게 변화하고 발전해왔는지 아주 대략적으로 살펴본다. (추후에 하나씩 자세히 공부해 볼 가치가 있는 논문/모델들이다.) 1) AlexNet(2012) 먼저 AlexNet이다. 기본적인 아키텍쳐는 위와 같이 5개의 convolution..