준지도 학습 (SSL; Self-supervised Learning) 비지도(Unsupervised), 지도(supervised) 학습은 많이 들어봤어도, 준지도(self-supervised) 학습은 입문자에게 낯설다. 단어 뜻을 토대로 유추해보면, 자기가 스스로 label을 생성하는 것이라고 유추해 볼 수 있겠다. 사람이 레이블링을 하는 것은 많은 리소스가 들어간다(그래서 따로 외주를 주는 것). 준지도 학습에서 레이블들은 입력으로 넣지 않은 나머지 데이터들이 y 삼아서 예측하도록 학습한다. "I love ___ go to school." 위 문장의 예시에서 빈 칸을 예측하는 태스크를 준지도 학습으로 해결하고자 한다면, 빈 칸을 제외한 나머지 단어들을(토큰) 다른 단어(토큰)들로 예측하도록 학습시키는 ..
도커와 쿠버네티스를 처음 사용해본다. 근데 몇 백 달러의 비용을 지불하거나(원래 클라우드 서비스가 블랙홀 같아서..) 직접 하드웨어를 구입해서 설치하는 것은 무리이다. 이에 쿠버네티스 서비스를 조그맣게(?) 내 노트북에 설치해서 이용해 볼 수 있도록 한 오픈소스 서비스들이 있다. 그 중 minikube를 통해서 기본적인 리소스 생성 등에 대해서 알아 볼 것이다. 그 전에 먼저 쿠버네티스의 몇 가지 특징에 대해서 알아보자. 선언형 인터페이스 쿠버네티스는 선언형 인터페이스를 선호한다. 말이 교과서적이라 맘에 안들지만, 쉽게 얘기하면 결과론적으로 'A와 같은 상태로 만들어줘'라고 선언하는 것을 kubenetes-native하다고 한다. 'A같은 상태가 되기 위해서 중간에 과정은 B, C를 거치고, D라는 예외..
텍스트 분류는 어떠한 문장이 주어졌을 때, 그 문장이 속할 클래스의 확률을 구하는 것이다. 가격도 싸고 상품 품질은 괜찮은데 배송이 늦어서 화가 나네요. 항목 분류 품질 긍정 배송 부정 가격 긍정 종합 부정 위의 예제와 같이 문장이 input으로 들어오면, 전처리한 임베딩을 통해서 학습된 모델의 분류 방식에 따라서 분류하는 식이다. RNN & CNN ensemble RNN 먼저 one-hot vector를 입력으로 받아서 embedding layer에 넣어주고, Bi-directional RNN을 통해 출력을 얻는다. 마지막 time-step값을 softmax layer에 통과시켜 각 클래스별로의 확률값을 얻는다(BPTT). 자연어 생성과는 다르게 auto-regressive가 아니기 때문에, 입력을 한..
Build once, Run anywhere. 도커 이미지는 패키지나 라이브러리 보다 더 상위(?)의 개념이다. 어떤 어플리케이션을 개발하는 데 필요한 환경(버전, 라이브러리 등)을 통째로 패키징한 데이터다. 따라서 받으면 누구나 어디서나 같은 결과가 나오는 것을 지향한다. 내가 만든 머신러닝 어플리케이션 코드를 도커 이미지로 만들고, 남들과 공유하는 방법에 대해서 알아보자. Dockerfile Dockerfile 기본 명령어는 아래와 같다. 명령어 기능 FROM base image로 어떤 이미지를 사용할 것인지를 명시 COPY 파일 혹은 디렉토리를 복사하는 명령어 RUN 도커 컨테이너에서 명령을 실행시키는 명령어 CMD 컨테이너가 시작될 때 실행하도록 하는 명령어, RUN과 다르게 하나의 도커 이미지에..
TFX Trainer TFX Trainer 컴포넌트는 파이프라인의 학습 단계를 처리한다. 이 컴포넌트의 주요 프로세스에 대해서 정리하면 아래와 같다. run_fn() 함수를 찾아서 학습 프로세스를 실행하는 진입점으로 사용한다. run_fn() 함수는 input_fn() 함수를 찾아 사용할 데이터 로딩을 일괄적으로 수행한다. 이 함수는 transform 단계에서 생성한 압축되고 전처리된 데이터셋을 로드할 수 있다. get_model()을 사용하여 컴파일된 케라스 모델을 가져온다. fit함수로 학습한다. 학습된 모델을 SavedModel 형식으로 저장하고 내보낸다. 예제 프로젝트의 run_fn() 함수 코드는 아래와 같다. def run_fn(fn_args): tf_transform_output = tft...
Skip-gram (2013) 딥러닝을 위해 사용되는 Word Embedding 기법 중 그 유명한 Word2Vec에 대해서 알아보자. CBOW와 Skip-gram이라는 두 가지 방법이 있는데, 간단히 정리하면 CBOW는 주변 단어를 통해서 원하는 단어를 예측하는 것이고, Skip-gram은 원하는 단어를 통해서 주변 단어들을 예측하는 것이다. 기본적인 개념(구조)은 오토인코더와 매우 비슷하다. Skip-gram의 구조를 자세히 보면 input 으로 원하는 중심 단어를 one-hot 벡터가 들어가고, hidden layer에서 linear한 계산을 거쳐 주변 단어 들을 softmax로 출력하는 분류(classification) 문제이다. 단어 위치 W(t-2) W(t-1) Wt W(t+1) W(t+2) ..
Docker 설치 가장 먼저 패키지 매니저인 apt-get을 업데이트한다. $ sudo apt-get update 도커 설치를 위한 prerequisites를 설치하려고 하는데, 역시나 에러가 떴다. 구글링해보니 lock이 걸려있는 경로를 지워줘야 한다고 한다. $ sudo rm /var/lib/apt/lists/lock $ sudo rm /var/cache/apt/archives/lock $ sudo rm /var/lib/dpkg/lock* 이후에 재부팅 하니 아래의 prerequisites 설치가 가능해졌다. $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release 다음은 GPG key를 설치한..
"파랑"과 "핑크" 중 "빨강"에 가까운 것은? 단어의 형태는 카테고리 형태이지만, 실제로 우리가 생각할 때에는 계층적으로 의미 구조를 지닌다. 따라서 단어들 혹은 문장들 간 '유사한가, 반대인가' 등의 개념이 들어간다. 계층적이라는 말은 카테고리화 할 수 있다는 의미이다. 예를 들면 색(Color)은 Hypernym이라면, 빨강(Red)은 Hyponym으로 색의 하위 카테고리에 속한다. 위의 예시를 보면, 우리는 단순히 vocab의 순서나 인덱스로 단어를 찾는 것이 아니라, 유사도로 찾는 것에 가깝다. 따라서 one-hot encoding 보다는 dense vector로 표현하는 것이 유사성을 머신에게 이해시키기 좋은 표현이다. 샘플(데이터)를 잘 설명하는 특징을 모아서 하나의 vector로 표현한 것..
- Total
- Today
- Yesterday
- torch
- Tennis
- 스타트업
- container
- MLOps
- productresearch
- Kubernetes
- DDUX
- 자연어처리
- productowner
- PM
- 인공지능
- 쿠버네티스
- 파이프라인
- ML
- 머신러닝
- deeplearning
- 도커
- Oreilly
- 머신러닝파이프라인
- PO
- productmanager
- 전처리
- pmpo
- 딥러닝
- mlpipeline
- docker
- dl
- nlp
- Bert
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |