Data Science 7

좋은 챗봇이란 무엇일까? QA, RM, PPO에 대해서

이번 포스팅에서는 멋쟁이 사자처럼 AI 개발자 심화과정을 수료하면서 진행했던 챗봇 프로젝트에 대해서 리뷰하려고 합니다. 좋은 챗봇이란?Chat-gpt의 등장으로 챗봇에 대한 관심도가 높아졌고, 일상 혹은 기업에서도 챗봇의 활용도가 갈수록 올라가고 있습니다.그렇다면, 좋은 챗봇이란 어떤 요소들을 가지고 있을까요?  QA (정확한 질의 응답)첫 번째는 당연하게도 주어진 질문에 대해 정확하게 대답하는 것이겠죠. 동문서답을 하거나 문법이나 문장구조가 엉망으로 대답을 한다면 우리는 챗봇에 대한 기대감을 상실하게 될겁니다. 정확한 정보 제공두 번째는 정확한 정보 제공입니다. 가령, 궁금한게 있어서 챗봇에 문의를 했는데 사실과는 전혀 관계 없는 얘기를 한다면 챗봇의 본질적 의미를 상실하게 되겠죠. 문맥 유지세 번째는..

서브워드 토큰화(Subwords Tokenization)

이번 포스팅에서는 NLP task에서 가장 많이 활용되고 있는 2가지 서브워드 토큰화 방법을 다뤄보도록 하겠습니다. 기존의 토큰화 방식(단어 단위)의 문제점은 한글과 영어처럼 형태소가 풍부하고 변형이 많은 언어에서 단어 수준의 토큰화는 너무 많은 어휘를 생성할 수 있습니다. 서브워드 방식은 단어를 더 작은 조각으로 나누어 데이터로부터 학습할 수 있게 하며, 이를 통해 모델의 일반화 성능을 높입니다. 서브워드의 두가지 큰 특징은 다음과 같습니다. 1. OOV(Out of Vocabulary) 문제 해결CV의 이미지 데이터는 크기의 차이는 있어도 개별 픽셀 값은 0~255로 같은 값을 가지고 있습니다.  NLP에서는 자주 사용하는 단어만을 단어사전에 등록해두게 되는데, 이 경우 신조어나 단어 사전에 등록되지..

[캐글] Cassava leaf disease classification

이번 포스팅에서는 캐글 대회에 참여했던 프로젝트를 정리하여 올려보려고 합니다. 프로젝트 주제는 Cassava leaf disease classification으로 남아메리카가 원산지인 다년성 작물인 Cassava leaf의 질병을 분류하는 문제입니다. 1. EDA 먼저 프로젝트에 필요한 데이터와 라이브러리를 불러오겠습니다. 인터프리터는 캐글 노트북으로 진행했으므로 import과정이 조금 다를 수 있습니다. 사용할 네트워크인 EfficientNet의 경우 케라스에서 바로 import되지 않는 오류가 발생하여 git에서 직접 다운로드 받아왔습니다. import matplotlib.pyplot as plt import cv2 import seaborn as sns import datetime import nu..

Kospi200지수를 추종하는 포트폴리오 알고리즘을 만들어보자

이번 포스팅에서는 제가 금융투자 알고리즘 회사에서 인턴생활을 할 때 진행했던 개인 프로젝트를 정리하여 올려보겠습니다. 프로젝트 목표는 시총 상위 50가지 종목으로 구성된 최적의 포트폴리오를 선정하여 KOSPI지수를 상회하는 것입니다. (포트폴리오 : 선택한 주식 종목 및 종목 별 투자 비율) - 들어가며 2021년 동계방학 때, AI기반 금융투자 알고리즘 회사에서 인턴생활을 했습니다. 첫 인턴 생활이다 보니까 들뜬 마음으로 회사에 좋은 아이디어를 내고 좋은 알고리즘을 개발하고 싶어서 1달 가량은 금융관련 책도 많이 읽고, 구글링도 엄청나게 많이 했던거 같아요. 본론으로 들어가기 앞서 혹시나 이 분야에 관심이 있는 분들을 위해서 인상 깊게 읽었던 책 몇 가지를 추천해보려고 합니다. 1. 문병로 교수님의 책..

신경망 분류 문제 (classification)

밑바닥부터 시작하는 딥러닝을 공부하며 정리한 글입니다.자세한 내용은 생략하고 핵심만 담았습니다.  1. 출력층 설계하기  신경망은 분류와 회귀 모두에 이용할 수 있습니다. 다만 둘 중 어떤 문제냐에 따라 출력층에서 사용하는 활성화 함수가 달라집니다. 일반적으로 회귀에는 항등 함수를, 분류에는 소프트맥스 함수를 사용합니다.  간단하게 회귀와 분류에 대해서 설명하자면, 기계학습 문제는 분류와 회귀로 나뉩니다. 분류는 데이터가 어느 클래스에 속하느냐는 문제입니다. 사진 속 인물의 성별을 분류하는 문제가 여기에 속합니다. 한편, 회귀문제는 입력 데이터에서 (연속적인)수치를 예측하는 문제입니다. 사진 속 인물의 몸무게를 예측하는 문제가 회귀입니다.  1) 항등 함수와 소프트맥스 함수 구현하기  항등 함수는 입력을..

신경망 (Neural Network)

밑바닥부터 시작하는 딥러닝을 공부하며 정리한 글입니다.자세한 내용은 생략하고 핵심만 담았습니다. 이번 장은 행렬, 내적, 함수를 기초지식으로 알고 있어야 이해할 수 있습니다. 1. 퍼셉트론에서 신경망으로    신경망을 그림으로 나타내면 그림1과 같이 됩니다. 여기에서 가장 왼쪽 줄을 입력층, 맨 오른쪽 줄을 출력층, 중간 줄을 은닉층이라고 합니다.  앞서 설명했던 퍼셉트론을 다시 살펴보겠습니다.  $$ y = \begin{cases} 0, & (b + w_1x_1 + w_2x_2 \leq 0) \\1, & (b + w_1x_1 + w_2x_2 > 0) \end{cases} $$ [식 1]   여기서 $b$는 편향을 나타내는 매개변수로 뉴런이 얼마나 쉽게 활성화되느냐를 제어합니다. 한편, $w_1$과 $w..

퍼셉트론 (Perceptron)

밑바닥부터 시작하는 딥러닝을 공부하며 정리한 글입니다.자세한 내용은 생략하고 핵심만 담았습니다.1. 퍼셉트론이란? 퍼셉트론은 신경망(딥러닝)의 기원이 되는 알고리즘으로 다수의 신호를 입력으로 받아 하나의 신호를 출력합니다.   (그림1)은 입력으로 2개의 신호를 받은 퍼셉트론의 예입니다. $x_1$과 $x_2$는 입력 신호, $y$는 출력 신호, $w_1$과 $w_2$는 가중치를 뜻합니다. 그림의 원을 뉴런 혹은 노드라고 부릅니다. 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해집니다($w_1x_1,w_2x_2$). 뉴런에서 보내온 신호의 총합($y$)이 정해진 한계를 넘어설 때(활성화)만 1을 출력합니다. 그 한계를 임계값이라 하며, $\theta$(theta, 세타)기호로 나타냅니다. 이상..