인공지능

    [CS182] Lecture 4: Optimization

    해당 글은 CS182: Deep Learning의 강의를 정리한 글입니다. 여기서 사용된 슬라이드 이미지의 권리는 강의 원작자에게 있습니다. Neural network의 Loss surface 지금까지 모델을 학습시키는 optimizer로 Gradient descent를 사용했습니다. 이전 강의에서 살펴보았던 머신러닝 모델들은 loss surface가 단순해 Gradient descent으로도 충분히 global optima에 도달할 수 있었습니다. 하지만 앞으로 우리가 다룰 딥러닝 모델의 loss surface는 위의 그림처럼 매우 복잡합니다. 이러한 surface는 Gradient descent로는 global optima에 도달하기에는 수많은 방해물들이 존재합니다. 보통 딥러닝 모델에서 보이는 방해..

    [CS182] Lecture 3: ML Basics 2 (Bias-Variance Tradeoff, Regularization, Machine Learning Workflow)

    해당 글은 CS182: Deep Learning의 강의를 정리한 글입니다. 여기서 사용된 슬라이드 이미지의 권리는 강의 원작자에게 있습니다. Linear Regression 이전 lecture에서는 데이터를 Classification(분류)하는 문제를 다루었습니다. 하지만 머신러닝이 예측할 수 있는 데이터는 범주형 데이터만 있는게 아닙니다. 이번에는 범주형 데이터가 아니라 연속형 데이터를 예측하는 Regression 문제를 다뤄보겠습니다. Model 정하기 Classification에서 골랐던 모델은 어떤 라벨인지 하나만 고르지 않고 각 라벨별 확률로 예측했습니다. 그렇기에 Regression에서도 특정한 값 하나가 아니라 확률로 예측할 것 입니다. Classification 모델은 각 라벨별 확률, 또..

    [CS182] Lecture 2: ML Basics 1 (머신러닝 문제의 종류, Model, Loss function, Optimizer)

    해당 글은 CS182: Deep Learning의 강의를 정리한 글입니다. 여기서 사용된 슬라이드 이미지의 권리는 강의 원작자에게 있습니다. 머신러닝 문제의 종류 머신러닝이 다루는 문제는 주어진 데이터가 어떤 형식으로 전달되는지에 따라 Supervised learning(지도 학습), Unsupervised learning(비지도 학습), Reinforcement learning(강화 학습) 세가지로 구분할 수 있다. Supervised learning Supervised learning은 입력 데이터 $x$가 주어지면 그에 대응되는 라벨 데이터 $y$를 예측해야 하는 문제입니다. 동물 사진이 주어지면 어떤 동물이 찍혀있는지를 맞추거나, 영어 문장을 프랑스어 문장으로 변역하거나, 엑스레이 사진을 보고 질..

    [CS182] Lecture 1: Introduction (Representation과 Deep Learning이란)

    해당 글은 CS182: Deep Learning의 강의를 정리한 글입니다. 여기서 사용된 모든 이미지의 권리는 강의 원작자에게 있습니다. Representation이란 기계 번역의 발전 기존에는 번역기를 만들고자 한다면 먼저 원본 언어와 목적 언어를 정하고 그 두 언어로 작성된 문장쌍을 모은다. 영어를 프랑스어로 번역하는 번역기를 만들고자 한다면 같은 뜻을 지닌 영어 문장과 프랑스어 문장쌍을 최대한 많이 모은다. 이렇게 모인 문장쌍으로 번역기를 학습시키면 번역기는 영어를 어떻게 프랑스어로 번역하는지 배우게 된다. 하지만 이런 방식에 문제점이 있다. 먼저 희소 언어는 이런 방식으로는 불리하다. 최대한 많은 데이터를 모아야 번역 품질이 높아지는데, 화자나 문헌이 적은 희소 언어는 영어나 중국어처럼 데이터를 ..

    [TFX 스터디] 4. Transform cont.

    저번에 실패했던 preprocess_fn에 tokenizer 넣기에 성공했다. 막상해보니 간단한 일에 시간을 많이 소비했다는 생각이 들었다. 저번 스터디에서 발생했던 에러는 다음과 같다. TypeError: Expected Tensor, SparseTensor, RaggedTensor or Operation got {'input_ids': , 'attention_mask': } of type 처음에는 해당 에러가 어디서 발생했는지 알 수 없었다. 하지만 Huggingface의 Transformers를 써봤다면 익숙한 이름이 보일 것이다. {'input_ids': , 'attention_mask': } 이는 Tokenizer가 문장을 토큰화한 결과를 내보낼때의 형식이다. input_ids에는 토큰화와 정수..

    [TFX 스터디] 3. Transform

    이번에는 Transform Component를 건드려보았다. Transform에서는 ExampleGen에서 Example을 가져와 Hugging Face Transformers의 Tokenizer를 통해 토크나이징을 하고자 한다. 먼저 preprocessing_fn() 함수를 정의한 transform.py를 만든다. import tensorflow as tf import tfx.v1 as tfx from transformers import AutoTokenizer MODEL_NAME = "beomi/KoAlpaca-llama-1-7b" TEXT_FEATURES = { 'en': None, 'ko': None, } tokenizer = AutoTokenizer.from_pret..

    [TFX 스터디] 2. Interactive Notebook

    사실 ExampleGen을 만들때부터 Jupyter를 통해 TFX의 Interactive Notebook 기능을 사용하려 했다. Interactive Notebook이란 Notebook 환경에서 Component를 직접 실행하고 이에 대한 중간 결과를 볼 수 있는 기능을 말한다. Interactive Notebook을 사용하면 각 단계별로 데이터가 어떻게 처리되는지를 디버깅하면서 짤 수 있기 때문에 이번 프로젝트에서 사용하고자 했다. 그런데 저번 주차에 사용하지 않았는데, 그 이유가 Jupyter Notebook를 실행하는데 문제가 발생했다. 처음에는 Jupyter Notebook 서버가 열리지 않아 Jupyter를 재설치하고 서버를 켰다. 그런데 이번에는 노트북에서 ipykernel 버전이 맞지 않아 ..

    [TFX 스터디] 1. ExampleGen 컴포넌트 추가하기

    사용할 데이터셋 준비하기 데이터셋은 AI Hub의 일상생활 및 구어체 한-영 번역 병렬 말뭉치 데이터를 사용했다. 꽤 많은 양의 데이터를 무료로 얻을 수 있다는 점은 매우 좋았지만, 한가지 문제점이 있었다. TFX가 기본적으로 지원하는 파일 타입에 JSON이 없다. 다행이도 JSON 파일을 읽고 tf.Example로 변환하는 ExampleGen을 편하게 만들 수 있다. # pipelines/pipeline.py import tfx.v1 as tfx from tfx.components.example_gen.component import FileBasedExampleGen from tfx.dsl.components.base import executor_spec from pipelines.custom_exec..