<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hojun_9724.log</title>
        <link>https://velog.io/</link>
        <description>일단 취업하고 싶어요</description>
        <lastBuildDate>Thu, 03 Oct 2024 19:37:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hojun_9724.log</title>
            <url>https://velog.velcdn.com/images/hojun_9724/profile/0ee4d674-0934-4260-8b1c-2c91885c33d4/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hojun_9724.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hojun_9724" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Dialogue and Quest Generation System Plan#Gemma sprint]]></title>
            <link>https://velog.io/@hojun_9724/Dialogue-and-Quest-Generation-System-PlanGemma-sprint</link>
            <guid>https://velog.io/@hojun_9724/Dialogue-and-Quest-Generation-System-PlanGemma-sprint</guid>
            <pubDate>Thu, 03 Oct 2024 19:37:07 GMT</pubDate>
            <description><![CDATA[<p>gemma2-2b모델을 파인튜닝 하여 게임 퀘스트 자동 생성 모델을 만들어 보았습니다.
팀원 : 신동혁, 장호준
후기 : 성공과 실패
    처음엔 게임에 관한 데이터를 직접 수집하기 위해 움직였으나 게임 퀘스트 데이터 자체를 구하는 데에 실패하여 kaggle에 공개되어 있는 rpg게임 데이터들을 활용하여 gemma모델에 학습시켜 보았습니다.</p>
<p><a href="https://huggingface.co/Hyeokbro/gemma2-2b-quest-generator_en/tree/main">https://huggingface.co/Hyeokbro/gemma2-2b-quest-generator_en/tree/main</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Prompt Engineering이란?]]></title>
            <link>https://velog.io/@hojun_9724/Prompt-Engineering%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@hojun_9724/Prompt-Engineering%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Tue, 02 Apr 2024 08:31:11 GMT</pubDate>
            <description><![CDATA[<h1 id="프롬프트prompt--인공지능이-수행해야-할-적업을-설명하는-자연어-텍스트">프롬프트(Prompt) : 인공지능이 수행해야 할 적업을 설명하는 자연어 텍스트</h1>
<pre><code>## 모델과 최종 사용자 모두가 이해하기 쉽도록 간결하고 명확해야 함
## 지나치게 복잡한 언어를 사용하거나 불필요한 정보를 제공하면 부적확한 결과가 나올 수 있음</code></pre><h1 id="프롬페트-엔지니어링prompt-engineering">프롬페트 엔지니어링(Prompt Engineering)</h1>
<pre><code>## 생성 모델이 이해할 수 있는 형태로 prompt(text)를 구조화하는 과정
    - text-to-text, text-to-image모델에 주로 사용됨</code></pre><h1 id="in-context-learning">In-Context Learning</h1>
<pre><code> ## 모델이 이전에 배운 정보다 컨텍스트를 활용하여 미래의 작업을 수행하거나 이해하는 것
    - ex) 이전 대화에서 나온 정보나 질문에 대한 답변을 기억하여 활용하는 것</code></pre><h1 id="gpt-3를-통해-알게-된-사실">GPT-3를 통해 알게 된 사실</h1>
<pre><code>  - 1. 입력값에 지시문을 포함시키면 그에 맞는 결과를 준다.
    - 일정 수준을 넘어서면 파인튜닝보다 좋은 결과가 나옴
- 2. 지시가 구체적일수록 의도에 가까운 결과를 준다</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Transfer Learning(전이 학습)]]></title>
            <link>https://velog.io/@hojun_9724/Transfer-Learning%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@hojun_9724/Transfer-Learning%EC%A0%84%EC%9D%B4-%ED%95%99%EC%8A%B5</guid>
            <pubDate>Thu, 07 Mar 2024 07:48:27 GMT</pubDate>
            <description><![CDATA[<h1 id="1-출현">1. 출현</h1>
<ul>
<li><h2 id="딥러닝의-발전">딥러닝의 발전</h2>
<ul>
<li>단어 임베딩(Word2vec, GloVe)를 통해 단어를 벡터로 표현하여 컴퓨터가 자연어를 이해할 수 있도록 만듦</li>
<li>딥러닝 모델(CNN, RNN, LSTM)들을 통해 자연어를 처리할 수 있는 기술이 급진적으로 성장</li>
</ul>
</li>
</ul>
<ul>
<li>산업에서의 신경망 적용<ul>
<li>구글 신경망 기계 번역(GNMT)</li>
<li>전체 문장을 하나의 번역 단위로 간주해 한 번에 번역하는 신경망 기반 적용</li>
<li>번역 오류가 55 -&gt; 85%까지 개선</li>
</ul>
</li>
</ul>
<ul>
<li><p>단어 임베딩의 한계</p>
<ul>
<li>단어 벡터의 질이 떨어짐</li>
<li>단어의 위치에 상관없이 동일벡터 할당</li>
<li>다의어에 대해 풍부한 의미를 가지지 못함</li>
<li>문맥으로 단어의 의미를 파악할 수 있도록 벡터가 생성되어야 함</li>
</ul>
</li>
<li><p>대용량 학습 데이터의 필요</p>
<ul>
<li>현실적인 task를 풀 수 있는 모델을 학습시킬 만한 많은 데이터를 확보 필요</li>
<li>대용량 학습 데이터가 없음</li>
<li>코퍼스 양이 너무 적어 한계</li>
</ul>
</li>
<li><p>CV분야에서의 발전</p>
<ul>
<li>AlexNet이 여러 task에서 도움이 되는 것을 확인</li>
</ul>
</li>
</ul>
<ul>
<li><p>Transfer Learning</p>
<ul>
<li>특정 도메인 task로부터 학습된 모델을 비슷한 도메인 task 수행에 재사용</li>
<li>장기 -&gt; 체스,  자전거 -&gt; 오토바이</li>
</ul>
</li>
<li><p>CV에서의 Transfer Learning</p>
<ul>
<li>모델 사전 학습 수행</li>
<li>대량의 이미지에서 학습된 일반적인 특징 정보 획득</li>
<li>학습된 정보를 전이시킴</li>
</ul>
</li>
<li><p>NLP에 적용</p>
<ul>
<li>대량의 코퍼스를 활용하여 특정 방식으로 모델을 미리 훈련시킴</li>
<li>언어의 전반적인 특징 정보를 학습한 사전 학습 모델 생성</li>
<li>사전 학습된 모델을 문서 분류, 대화 처리 등과 같은 다양한 task에 활용</li>
</ul>
</li>
<li><p>Transfer Learning</p>
<ul>
<li><p>Pre-training</p>
<ul>
<li>Downstream task(구체적으로 풀고 싶은 문제)에 대해 fine-tuning하기 위해 필요한 모델 파라미터를 초기화하는 작업</li>
<li>&#39;많은 양의 코퍼스&#39;에 기반하여 특정 학습 방식으로 모델 훈련</li>
</ul>
</li>
<li><p>Fine-tuning</p>
<ul>
<li>여러 downstream task에 맞추어 pre-training 단계에서 학습된 파라미터를 조금씩 조정</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>Pre-traing &amp; Fine tuning 효율성</p>
<ul>
<li><p>풍부하고 유용한 지식 습득 가능</p>
</li>
<li><p>학습 데이터에 레이블링 되지 않은 코퍼스가 사용되기 때문에, 학습 데이터를 제한없이 확보 가능</p>
</li>
<li><p>downstream task에 대해서 더 빠르게 모델 학습이 수렴하여 효율적인 학습 시간 확보 가능</p>
</li>
<li><p>빠른 학습 수렴 시간, 컴퓨팅 리소스 절약</p>
</li>
</ul>
</li>
<li><p>ELMo(Embeddings from Language Models)</p>
<ul>
<li><p>언어 모델 기반으로 문맥 정보를 반영한 단어 임베딩</p>
</li>
<li><p>문장 전체를 보고 단어 임베딩 생성</p>
</li>
<li><p>대용량 데이터로 언어 모델을 pre-training 수행</p>
</li>
<li><p>사전 훈련된 언어 모델을 fine-tuning하여 다양한 task에 적용</p>
</li>
<li><p>구조</p>
<ul>
<li>2개의 층으로 이루어진 순/역방향 LSTM을 독립적으로 학습하는 언어 모델</li>
<li>위쪽 -&gt; 단어의 문맥 정보</li>
<li>아래쪽 --&gt; 문법 정보</li>
</ul>
</li>
<li><p>pre-training</p>
<ul>
<li>다음 단어를 예측하는 언어 모델링 작업을 통해 언어 모델 사전 학습 진행</li>
<li>문장 전체가 입력으로 들어오고 순차적으로 다음 단어를 예측하며 단어 임베딩을 학습</li>
<li>단어의 순서에 따라 임베딩 값이 달라지기 때문에 문맥 정보가 반영된 임베딩 생성</li>
</ul>
</li>
<li><p>FFNN(피드 포워드 신경망, 순방향)</p>
<ul>
<li>입력층에서 출력층 방향으로 연산이 전개되는 신경망</li>
</ul>
</li>
<li><p>Contextualized Word Embedding</p>
<ul>
<li>순방향 LSTM의 은닉 벡터 및 토큰 임베딩 벡터와 역방향 LSTM의 은닉 벡터 및 토큰 임베딩 벡터를 이어 붙임 (문맥 정보를 담고 있음, 토큰의 좌우 방향 모두의 데이터를 알고 있기 때문에)</li>
<li>이어 붙은 벡터에 가중치를 각각 곱한 후 더하여 최종 ELMo 임베딩 벡터 생성</li>
</ul>
</li>
<li><p>Fine-tuning</p>
<ul>
<li>각각의 가중치는 수행하고자 하는 task에 따라 달라짐</li>
<li>문맥적인 의미가 중요 -&gt; 상위 LSTM에 높은 가중치</li>
<li>구조 관계가 중요 -&gt; 하위 LSTM에 높은 가중치</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Transformer]]></title>
            <link>https://velog.io/@hojun_9724/Transformer</link>
            <guid>https://velog.io/@hojun_9724/Transformer</guid>
            <pubDate>Tue, 05 Mar 2024 07:39:41 GMT</pubDate>
            <description><![CDATA[<h1 id="구성요소">구성요소</h1>
<ul>
<li><h2 id="encoder">Encoder</h2>
<ul>
<li>Self-Attention</li>
<li>Layer Normalization</li>
<li>Skip Connection</li>
<li>Feed-Forward Networks</li>
<li>Multi-Head Attention</li>
</ul>
</li>
<li><h2 id="decoder">Decoder</h2>
<ul>
<li>Auto-regressive</li>
<li>TeacherForcing</li>
<li>Masked Self-Attention(차별점)</li>
<li>Encoder-Decoder Attention</li>
</ul>
</li>
<li><h2 id="input-embedding">Input Embedding</h2>
<ul>
<li>입력 데이터를 고차원 벡터로 변환하는 과정</li>
<li>Transformer가 입력 데이터를 처리할 수 있도록, Vocabulary를 연속적인 벡터 형태로 변환</li>
<li>학습 가능한 파라미터들로 구성됨</li>
</ul>
</li>
<li><h2 id="positional-encoding">Positional Encoding</h2>
<ul>
<li>단어의 위치 정보를 반영(sequence적인 RNN 과 CNN의 특성을 모두 제거하였기 때문에 병렬계산을 위한 정보가 필요?)</li>
<li>sin함수와 cos함수를 통해 입력마다 다른 위치의 정보값 부여</li>
</ul>
</li>
<li><h2 id="self-attention">Self-Attention</h2>
<ul>
<li>기존 Seq2seq<ul>
<li>입력문장과 타겟 문장 사이의 Attention Score만 계산</li>
</ul>
</li>
<li>Transformer에서의 Self_Attention<ul>
<li>입력 문장 내의 토큰들의 attention</li>
</ul>
</li>
<li>단계<ul>
<li>Embedding(512)</li>
<li>3개의 Query, Key, Value 벡터 구성</li>
<li>Query와 Key를 곱하여 Dot Product Attention Score 계산</li>
<li>Scale 작업을 진행. Key 벡터사이즈인 64의 제곱근인 8로 나누어 줌</li>
<li>Softmax진행(실제로 attention distribution으로 만들어줘야 하기 때문에)<ul>
<li>현재 위치의 단어의 encoding에 있어서 얼마나 각 단어들의 표현이 들어가는지에 대한 일종의 확률로 변환<ul>
<li>&#39;어디에 얼마나 집중해야 하는가?&#39;를 보는 것</li>
</ul>
</li>
</ul>
</li>
<li>Softmax를 통과한 확률 값을 Value 벡터의 각각 원소에 곱하여 새로운 벡터를 얻음<ul>
<li>이전까지의 과정 == Scaled Dot Product Attention이라 명명</li>
</ul>
</li>
<li>결과로 나온 벡터를 다 더하여 Self Attention의 출력을 구성</li>
</ul>
</li>
</ul>
</li>
<li><h2 id="multi-head-attention">Multi-Head Attention</h2>
<ul>
<li>Self-Attention 계산 과정을 8개의 다른 weight행렬들에 대해 Head 갯수 만큼 수행</li>
<li>Transformer 논문에서는 Head를 8개로 나누어서 계산</li>
<li>다양한 표현을 학습함으로 더 잘 표현 가능</li>
<li>여러 self-attention의 앙상블이라 생각하면 쉬움</li>
<li>단계<ul>
<li>문장 X가 입력, Input Embedding 및 Position Encoding을 거쳐 입력벡터 계산</li>
<li>입력 벡터를 통해 Self-Attention을 Head #0 ~ #7까지 모두 계산</li>
<li>계산된 Self-Attention값들을 가지는 모든 HEAD들을 연결<ul>
<li>HEAD#0 ~ HEAD#7의 출력인 Z_0 ~ Z_7값들을 연결</li>
</ul>
</li>
<li>연결된 Z_0 ~ Z_7의 값을 최종 Output Matrix인 $$W^{o}$$ 왁 곱하여 최종 벡터 Z를 계산</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><h2 id="addition--layer-normalization">Addition &amp; Layer Normalization</h2>
<ul>
<li><p>Addition</p>
<ul>
<li>두 개 이상의 텐서를 요소별로 더하는 연산</li>
<li>Transformer 모델에서는 각 계층의 입력과 출력을 더하는 Residual Connection 기법을 Addition으로 사용</li>
<li>모델의 깊이가 깊어질수록 발생할 수 있는 Over-fittiong 문제를 완화하는 데 도움을 줌</li>
</ul>
</li>
<li><p>Layer Normalization</p>
<ul>
<li>각 layer의 출력을 정규화하는 방법</li>
<li>각 샘플의 특성 값들을 평균 0, 분산 1로 정규화</li>
<li>Batch Normalization#<ul>
<li>기존에 많이 사용하던 정규화방식</li>
<li>각 데이터의 배치를 독립적으로 정규화함</li>
</ul>
</li>
<li>Layer Normalization#<ul>
<li>transformer 이후 주로 사용</li>
<li>입력 데이터의 sequence 길이에 영향을 받지 않음</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h1 id="특징">특징</h1>
<ul>
<li><h2 id="병렬-계산">병렬 계산</h2>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Attention]]></title>
            <link>https://velog.io/@hojun_9724/Attention</link>
            <guid>https://velog.io/@hojun_9724/Attention</guid>
            <pubDate>Tue, 05 Mar 2024 06:40:01 GMT</pubDate>
            <description><![CDATA[<h1 id="attention">Attention</h1>
<ul>
<li><h2 id="배경--사람이-글을-읽을-때-모든-단어에-집중하지-않음">배경 : 사람이 글을 읽을 때 모든 단어에 집중하지 않음</h2>
<ul>
<li>문맥에 따라 집중할 단어를 결정할 필요가 있다고 느낌</li>
</ul>
</li>
<li><h2 id="시퀀스의-길이가-길수록-attention이-없으면-성능이-저하됨">시퀀스의 길이가 길수록 attention이 없으면 성능이 저하됨</h2>
<ul>
<li>RNNsearch/RNNenc<ul>
<li>Attention 포함/ 미포함 RNN모델</li>
</ul>
</li>
</ul>
</li>
<li><h2 id="mechanism">Mechanism</h2>
<ul>
<li>인코더의 hidden state를 디코더로 전달(기존 seq2seq는 context vector만 전달)</li>
<li>각 hidden states의 점수 계산 -&gt; 생성 시간 별로 집중할 부분 찾음</li>
<li>여러 time steps에서 모델이 입력의 다른 부분에 focus하도록 함</li>
</ul>
</li>
<li><h2 id="querykeyvalue">Query/Key/Value</h2>
<ul>
<li><p>Querry(검색어)</p>
</li>
<li><p>Key(페이지 제목 ,저자) : Querry를 통해 찾아낸 적절한 속성?</p>
</li>
<li><p>Value(내용) : Key에 매핑된 값들</p>
</li>
<li><p>attention에서의 Querry Key Value
<img src="https://velog.velcdn.com/images/hojun_9724/post/ec93fb08-4a04-4d04-abdd-c5b7f07967d9/image.png" alt=""></p>
</li>
</ul>
</li>
</ul>
<p>  다시듣고 추가 이해 필요</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[딥러닝 기반 자연어 처리 기초 주요 개념]]></title>
            <link>https://velog.io/@hojun_9724/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EB%B0%98-%EC%9E%90%EC%97%B0%EC%96%B4-%EC%B2%98%EB%A6%AC-%EA%B8%B0%EC%B4%88-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90</link>
            <guid>https://velog.io/@hojun_9724/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EB%B0%98-%EC%9E%90%EC%97%B0%EC%96%B4-%EC%B2%98%EB%A6%AC-%EA%B8%B0%EC%B4%88-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90</guid>
            <pubDate>Tue, 05 Mar 2024 04:11:33 GMT</pubDate>
            <description><![CDATA[<h1 id="sequence-to-sequence">Sequence-to-sequence</h1>
<ul>
<li>입력된 시퀀스(문장)을 다른 시퀀스로 변환하는 모델로, 인코더 RNN, 디코더 RNN으로 구성</li>
</ul>
<h2 id="인코더---입력을-처리">인코더 - 입력을 처리</h2>
<ul>
<li>자연어 이해</li>
<li>입력 시퀀스를 받아서 Context vector로 변환</li>
<li>auto encoding</li>
</ul>
<h2 id="디코더---출력을-처리">디코더 - 출력을 처리</h2>
<ul>
<li>자연어 생성</li>
<li>Context vector로 출력 시퀀스 생성</li>
<li>대다수 auto regressive방식으로 출력</li>
</ul>
<h2 id="rnns">RNNs</h2>
<ul>
<li>시계열을 다루는 데(시계열) 좋은 방식(시계열성 특성을 가짐)<ul>
<li>딥러닝에 좋은 이유이기도 함</li>
</ul>
</li>
<li>앞뒤의 데이터가 같은 파라미터를 공유하고 있다
<img src="https://velog.velcdn.com/images/hojun_9724/post/d53328ca-ff25-4c81-902f-744b0aa20130/image.png" alt="">
<img src="https://velog.velcdn.com/images/hojun_9724/post/c520ba17-f8f3-413b-980b-a198504d0df4/image.png" alt=""></li>
</ul>
<ul>
<li><p>손실함수</p>
<ul>
<li>RNN에서의 손실을 최소화 시키는 함수</li>
</ul>
</li>
<li><p>시간 순서 역전파</p>
<ul>
<li>RNN이 시계열적 특성을 가지므로 역산하여 각 시간 단계에서의 가중치를 역산</li>
</ul>
</li>
<li><h3 id="one-to-one">One-to-one</h3>
<ul>
<li>전통적인 Neural Network와 동일
<img src="https://velog.velcdn.com/images/hojun_9724/post/4dbb0b5e-3ce0-474f-bafe-5b21616ef157/image.png" alt=""></li>
</ul>
</li>
<li><h3 id="one-to-many">One-to-many</h3>
<ul>
<li>한개의 입력으로 여러개의 Sequence생성
<img src="https://velog.velcdn.com/images/hojun_9724/post/f963a10d-1ffe-4929-a9fa-f8e4aefb4df3/image.png" alt=""></li>
</ul>
</li>
<li><h3 id="many-to-one">Many-to-one</h3>
<ul>
<li>텍스트마이닝에서 감정분석과 관련해 사용
<img src="https://velog.velcdn.com/images/hojun_9724/post/7986dceb-49dd-4522-bca5-6c99c9f07ba7/image.png" alt=""></li>
</ul>
</li>
<li><h3 id="many-to-many">Many-to-many</h3>
<ul>
<li>기계학습, 형태소 분석 학습, 번역 등등
<img src="https://velog.velcdn.com/images/hojun_9724/post/eb00fcbc-03a6-4f85-aa2c-a55e78985d50/image.png" alt=""></li>
</ul>
</li>
<li><h3 id="brnnbidirectional-rnn">BRNN(Bidirectional RNN)</h3>
<ul>
<li>양방향 학습
<img src="https://velog.velcdn.com/images/hojun_9724/post/102ae9f6-3032-44e7-878b-6f65670844d0/image.png" alt=""></li>
</ul>
</li>
<li><h3 id="drnndeep-rnn">DRNN(Deep RNN)</h3>
<ul>
<li>적층 구조 학습
<img src="https://velog.velcdn.com/images/hojun_9724/post/ea8534c2-caab-45d5-8f58-6f698e9fe108/image.png" alt=""></li>
</ul>
</li>
</ul>
<ul>
<li><h2 id="장점과-단점">장점과 단점</h2>
<ul>
<li><p>장점</p>
<ul>
<li>모든 길이의 시퀀스 입력으로 처리가능</li>
<li>시간에 따라 가중치를 공유하여, 입력 시퀀스가 길어져도 모델 크기가 증가하지 않음</li>
<li>과거 정보를 고려하여 다음 시간의 출력을 계산함</li>
</ul>
</li>
<li><p>단점</p>
<ul>
<li>매번 시간에 따라 출력 계산 -&gt; 병렬처리가 불가능하여 계산속도 느림</li>
<li>(Long term dependency) 시퀀스가 길어지면 오래전 정보를 반영하기 어려움</li>
<li>현재 상태에 대한 미래 입력을 고려할 수 없음</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><h2 id="gradient-vanishing--exploding">Gradient vanishing / exploding</h2>
<ul>
<li>너무 작아지거나/커져서 가중치 값이 너무 커지는 문제 발생<ul>
<li>모델이 분안정해짐</li>
<li>시퀀스 데이터의 장기 의존성을 제대로 학습하지 못하게 됨</li>
<li>극한과 유사하게 생각하면 이해 됨</li>
</ul>
</li>
</ul>
</li>
<li><h2 id="lstmlong-short---term-memory">LSTM(Long Short - Term Memory)</h2>
<ul>
<li><p>RNN에서 발생하는 Long term dependenct problem 완화 방법으로 cell state와 gate라는 매커니즘 도입</p>
<ul>
<li>필요한 정보만을 선택적으로 업데이트하거나 삭제하는 방법을 도입(정보를 잘 기억 후 활용)</li>
</ul>
</li>
<li><p>forget gate</p>
<ul>
<li>어떤 데이터를 버릴지 결정</li>
<li>sigmoid함수로 범위 제한하여 결정</li>
</ul>
</li>
<li><p>Input gate</p>
<ul>
<li>어떤 새로운 정보를 cell state에 저장할지 결정</li>
<li>새로운 후보 cell state를 생성, 이후 후보 cell state정보 중 일부가 cell state에 저장</li>
</ul>
</li>
<li><p>Cell state</p>
<ul>
<li>cell state 업데이트로 forget gate를 통해 결정된 정보를 잊어버린 다음 input에서 결정된 정보를 추가</li>
</ul>
</li>
<li><p>Output gate</p>
<ul>
<li>다음 hidden state가 무엇을 출력해야 하는가?</li>
<li>output gate값고 현재 시간의 cell state를 통해 현재의 hidden state 역산 가능</li>
</ul>
</li>
<li><h2 id="grugated-recurrent-unit">GRU(Gated Recurrent Unit)</h2>
<ul>
<li>LSTM의 변형으로 구조가 더 간단함</li>
<li>두 개의 게이트(update, reset)과 하나의 상태(hidden state만을 가짐)</li>
<li>구조가 단순함으로 계산 효율성이 높음</li>
<li>Long-term dependenct에 LSTM보다 취약</li>
<li><h3 id="update-gate">update gate</h3>
<ul>
<li>얼마나 업데이트할지 결정</li>
</ul>
</li>
<li><h3 id="reset-gate">reset gate</h3>
<ul>
<li>얼마나 &#39;잊어버릴지&#39; 결정</li>
</ul>
</li>
<li><h3 id="hidden-state">hidden state</h3>
<ul>
<li>후보 hidden state를 통해 현재 hidden state를 업데이트 </li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h1 id="요약">요약</h1>
<p> <img src="https://velog.velcdn.com/images/hojun_9724/post/0f9e1cdc-033c-4aa3-8f4f-c0c1161e968a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[텍스트 전처리(1)]]></title>
            <link>https://velog.io/@hojun_9724/%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%A0%84%EC%B2%98%EB%A6%AC1</link>
            <guid>https://velog.io/@hojun_9724/%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%A0%84%EC%B2%98%EB%A6%AC1</guid>
            <pubDate>Mon, 04 Mar 2024 17:50:43 GMT</pubDate>
            <description><![CDATA[<h1 id="텍스트-전처리text-preprocessing란">텍스트 전처리(Text Preprocessing)란?</h1>
<ul>
<li><h2 id="배경--초거대-인공지능-시대에도-유효한-데이터-전처리">배경 : 초거대 인공지능 시대에도 유효한 데이터 전처리</h2>
<ul>
<li>LLM의 시대에서 모델링을 하는 과정을 크게 6단계로 나누는데 그 중 4단계나 포함할 정도로 중요한 과정이다!</li>
</ul>
</li>
<li><h2 id="방법">방법</h2>
<ul>
<li>HTML태그, 특수문자, 이모티콘</li>
<li>정규표현식 <ul>
<li>특정 정보 추출</li>
</ul>
</li>
<li>불용어(Stopword)<ul>
<li>의미 없는 단어들 제거</li>
</ul>
</li>
<li>어간추출(Stemming)<ul>
<li>의미를 가진 부분만 추출</li>
</ul>
</li>
<li>표제어추출(Lemmatizing)<ul>
<li>원형 추출 ex) am, are -&gt; be</li>
</ul>
</li>
</ul>
</li>
<li><h2 id="preprocessing-pipeline">Preprocessing Pipeline</h2>
<p><img src="https://velog.velcdn.com/images/hojun_9724/post/36c36424-c914-4515-8201-25cdba646a84/image.png" alt=""></p>
</li>
<li><h2 id="토큰화tokenization">토큰화(Tokenization)</h2>
<ul>
<li><p>주어진 데이터를 토큰이라 불리는 단위로 나누는 작업</p>
</li>
<li><p>토큰이 되는 기준은 다를 수 있음(어절, 단어, 형태소, 음절, 자소 등)</p>
</li>
<li><p>Character-based/Word-based/Subword-based</p>
</li>
<li><h3 id="왜-토큰화하는가">왜 토큰화하는가?</h3>
<ul>
<li>단어 의미를 밀집 벡터로 표현하기 위해 단어들을 사전화<ul>
<li>어떻게 토큰화를 하였는지에 따라 모델의 성능과 학습에 직결됨</li>
</ul>
</li>
</ul>
</li>
<li><p>고려사항</p>
<ul>
<li>구두점이나 특수 문자를 단순 제외</li>
<li>줄임말과 단어 내 띄어쓰기</li>
<li>문장 토큰화 : 단순 마침표를 기준으로 자를 수 없음</li>
</ul>
</li>
<li><h3 id="한국어-토큰화의-어려움">한국어 토큰화의 어려움</h3>
<ul>
<li>영어는 합성어와 줄임말에 대한 예외처리만 한다면, 띄어쓰기 토큰화를 수행해도 단어 토큰화가 잘 작동</li>
<li>But, 한국어는 형태소 단위의 토큰화가 필요<ul>
<li>조사라는 것이 존재</li>
<li>띄어쓰기가 잘 지켜지지 않음 -&gt; 잘 안되어 있더라도 사람들이 잘 이해하기 때문에</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>문장 토큰화</p>
<ul>
<li>문장 분리</li>
</ul>
</li>
<li><p>단어 토큰화</p>
<ul>
<li>구두점 분리, 단어 분리</li>
<li>Hello, World! -&gt; Hello / , / World / !  </li>
</ul>
</li>
</ul>
<ul>
<li><h2 id="텍스트-정제">텍스트 정제</h2>
<ul>
<li>코퍼스 내에서 토큰화 작업에 방해가 되거나 의미가 없는 부분의 텍스트, 노이즈 제거 작업</li>
<li>불용어, 특수문자 제거</li>
<li>대소문자 통합</li>
<li>중복 문구 제거</li>
<li>다중 공백 통일 등</li>
</ul>
</li>
<li><h2 id="정규화normalization">정규화(Normalization)</h2>
<ul>
<li>Stemming(어간 추출)<ul>
<li>어형이 변형된 단어로부터 접사 등을 제거하고 그 단어의 어간을 분리해내는 것</li>
<li>심플하고 빠름</li>
<li>포터 스태머 알고리즘</li>
</ul>
</li>
<li>Lemmatization(표제어 추출)<ul>
<li>품사 정보가 보존된 형태의 기본형으로 변환</li>
<li>가장 섬세한 방법? =&gt; 형태학적 파싱(parsing 구문분석)</li>
<li>형태소란?<ul>
<li>의미를 가진 가장 작은 단위</li>
<li>어간(stem) - 단어의 의미를 담고 있는 핵심 부분</li>
<li>접사(affix) - 단어에 추가적인 의미를 주는 부분</li>
</ul>
</li>
<li>원형 추출</li>
<li>더 정확하지만 느림</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><h2 id="편집거리edit-distance">편집거리(Edit distance)</h2>
<ul>
<li><p>Levenshtein distance</p>
</li>
<li><p>나는, 난 1</p>
</li>
<li><p>hat, cat 1</p>
</li>
<li><p>s1을 s2로 바꾸는 최소한의 횟수</p>
</li>
<li><p>delete, insert, substitution = 연산횟수 판별 방법</p>
</li>
<li><h2 id="정규표현식regex">정규표현식(Regex)</h2>
<ul>
<li>특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어</li>
<li>Python 뿐만 아니라 문자열을 처리하는 모든 곳에서 사용됨</li>
<li>python에서는 re라이브러리를 이용해 사용 가능</li>
</ul>
</li>
</ul>
</li>
</ul>
<h1 id="sentencepiece">SentencePiece</h1>
<ul>
<li>Google이 공개한 Tokenization 도구</li>
<li>BPE, unigram 방식 등 다양한 subword units를 지원함</li>
</ul>
<h1 id="tokenizer">Tokenizer</h1>
<ul>
<li>Huggingface에서 제공하는 토큰화 라이브러리</li>
</ul>
<h2 id="한국어-전처리를-위한-대표적인-라이브러리">한국어 전처리를 위한 대표적인 라이브러리</h2>
<ul>
<li>KoNLPy<ul>
<li>한국어 자연어처리를 위한 대표적 python Library (=r에서 텍스트 마이닝에 사용하던 KoNLP와 사용법 동일)</li>
<li>Twitter, Komaran, Mecab 등 다양한 형태소 분석기들을 제공<ul>
<li>morphs : 형태소 추출</li>
<li>pos : 품사 태깅</li>
<li>nouns : 명사 추출</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>NLTK(Natural Language Toolkit)<ul>
<li>영어로 된 텍스트 자연처리를 위한 대표적 python Library</li>
<li>Classification, Tokenization 등 50개가 넘는 library를 제공하며 쉬운 interface를 제공</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[NLP(Natural Language Processign)란 무엇인가?]]></title>
            <link>https://velog.io/@hojun_9724/NLPNatural-Language-Processign%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80</link>
            <guid>https://velog.io/@hojun_9724/NLPNatural-Language-Processign%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80</guid>
            <pubDate>Mon, 04 Mar 2024 05:19:45 GMT</pubDate>
            <description><![CDATA[<h1 id="자연어-처리란">자연어 처리란?</h1>
<p><img src="https://velog.velcdn.com/images/hojun_9724/post/a923e87b-6ff4-4dd7-b514-5083ff91188b/image.png" alt=""></p>
<ul>
<li>Linguistics(언어학)와 Computer Science의 교집합</li>
<li>인공지능의 하위개념</li>
<li>컴퓨터가 자연언어의 의미를 분석하여 이해하고 생성할 수 있도록 하는 기술</li>
</ul>
<h1 id="자연어란">자연어란?</h1>
<ul>
<li>사람들이 일상생활에서 자연스럽게 사용하는 언어</li>
<li>인공언어(컴퓨터 언어)의 반대말</li>
</ul>
<h1 id="nlg--nlu">NLG &amp; NLU</h1>
<p><img src="https://velog.velcdn.com/images/hojun_9724/post/343d9ddc-4597-4519-852d-31ecfaf27d24/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NLP(자연어처리)및 인공지능 배경]]></title>
            <link>https://velog.io/@hojun_9724/NLP%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC%EB%B0%8F-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EB%B0%B0%EA%B2%BD</link>
            <guid>https://velog.io/@hojun_9724/NLP%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC%EB%B0%8F-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EB%B0%B0%EA%B2%BD</guid>
            <pubDate>Mon, 04 Mar 2024 05:05:41 GMT</pubDate>
            <description><![CDATA[<h1 id="nlp자연어-처리란">NLP(자연어 처리)란?</h1>
<ul>
<li>보통 인간의 언어를 의미</li>
<li>일상 생활에서 많이 사용됨<ul>
<li>chat gpt, 요약하기 등등...</li>
</ul>
</li>
</ul>
<h2 id="nlp-제외한-일상-속-인공지능">NLP 제외한 일상 속 인공지능</h2>
<ul>
<li><p>추천 시스템</p>
<ul>
<li>ex)유튜브 알고리즘 - 추천으로 인해 서비스 유지 시간 향상</li>
</ul>
</li>
<li><p>OCR(Optical Character Recognition)</p>
<ul>
<li>ex) 문서나 사진의 글자를 인식</li>
</ul>
</li>
<li><p>비디오 요약</p>
<ul>
<li>ex) 경기 주요장면 인식 및 추출하여 하이라이트로 제작</li>
</ul>
</li>
<li><p>자율주행</p>
<ul>
<li>ex) 자동차 및 하드웨어와 소프트웨어와 결합</li>
</ul>
</li>
<li><p>IBM</p>
<ul>
<li>ex) 인공지능 vs 인간의 퀴즈쇼</li>
<li>QA시스템 같은 경우 인공지능이 인간을 뛰어넘기 시작한지는 오래됨   </li>
</ul>
</li>
<li><p>AlphaGo</p>
<ul>
<li>알파고 바둑</li>
</ul>
</li>
<li><p>AI앵커</p>
<ul>
<li>저널리즘 분야에도 적용</li>
</ul>
</li>
<li><p>미술</p>
<ul>
<li>인공지능으로 인한 미술도 가능</li>
<li>창작을 위한 대회에서 우승할 정도로 우수한 모델도 나옴?</li>
</ul>
</li>
<li><p>Health care</p>
<ul>
<li>의료계 분들의 역할 일부 분할</li>
</ul>
</li>
<li><p>chat gpt</p>
<ul>
<li>인공지능을 가장 직접적으로 경험해볼 수 있었던 사례</li>
</ul>
</li>
</ul>
<h1 id="우리의-지능으로-보는-인공지능">우리의 지능으로 보는 인공지능?</h1>
<p><img src="https://velog.velcdn.com/images/hojun_9724/post/7c568fca-8a49-4203-8dce-82e96646a933/image.png" alt=""></p>
<ul>
<li>(데이터로 학습하는)두뇌 = 머신러닝</li>
<li>(자연어를 이해하는)귀 = 자연어 처리</li>
<li>(물리적 행위를 제공하는)육체 = 로보틱스</li>
<li>(상황을 파악하고 이해하는)눈 = 컴퓨터 비전</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>