본문 바로가기

Data Analysis

(16)
Keras / Sequential Model vs Functional Model Keras 모델을 만드는 방법은 Sequential과 Functional로 두가지 방법이 있다. Sequential Model은 레이어를 층층이 쌓아가는 방법으로 일반적으로 딥러닝 네트워크 구조를 생각할 때 Sequential Model의 구조를 떠올린다. Layer-by-layer 쌓아올리는 방법으로, layer를 공유하는 구조나 다중 입력/출력을 사용하지 못한다는 한계가 있다. Functional Model은 Layer가 앞/뒤 layer에만 연결된 구조뿐 아니라 훨씬 더 자유자재로 그 구조를 정의하여 사용할 수 있게 된다. Layer를 어떤 layer에든지 연결해서 사용할 수 있는 것이다. 그래서 siamese 네트워크와 residual 네트워크 같은 복잡한 구조의 네트워크를 만들수 있게 된다. S..
Introduction to Python 파이썬 문법인덴트파이썬의 대표적인 특징이기도 한 인덴트는 공식 가이드인 PEP 8에 따라 공백 4칸을 원칙으로 한다. 파이썬 개선 제안서(PEP, Python Enhancement Proposals) 프로세스는 새로운 기능을 제안하고 커뮤니티의 의견을 수렴하여 파이썬의 디자인 결정을 문서화 하는 파이썬의 주요 개발 프로세스를 일컫는다.https://peps.python.org/pep-0008/ PEP 8 – Style Guide for Python Code | peps.python.orgPEP 8 – Style Guide for Python Code Author Guido van Rossum , Barry Warsaw , Nick Coghlan Status Active Type Process Create..
Long Short-Term Memory(LSTM) 장기 의존성 문제(the problem of Long-Term Dependencies)Vanlia RNN (Keras에서는 Simple RNN이라고 부름)은 Sequence의 길이가 길수록 성능이 떨어진다.시점(time step)이 길어질수록 앞의 정보가 충분히 전달되지 못하는 현상이 발생한다.이를 장기 의존성 문제라고 한다.위의 그림은 첫번째 입력값인 x_1의 정보량을 짙은 남색으로 표현했을 때, 색이 점차 얕아지는 것으로 시점이 지날수록 x_1의 정보량이 손실되어가는 과정을 표현하였다. 뒤로 갈수록 x_1의 정보량은 손실되고, 시점이 충분히 긴 상황에서는 x_1의 전체 정보에 대한 영향력은 거의 의미가 없을 수도 있다. 바닐라 RNN의 내부 구조LSTM에 대해서 이해해보기 전에 바닐라 RNN의 뚜껑을..
Recurrent Neural Network(RNN) 순환 신경망 (Recurrent Neural Network, RNN)입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence)모델RNN은 입력과 출력의 길이를 다르게 설계 할 수 있으므로 다양한 용도로 사용할 수 있다. 메모리 셀, RNN 셀RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고 있다.위의 그림을 보면, x는 입력층의 입력 벡터, y는 출력층의 출력 벡터이다. 실제로는 편향 b도 입력으로 존재할 수 있지만, 앞으로의 그림에서는 생략한다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀(cell)이라고 한다. 이 셀은 이전의 값을 기억하려고 하는 일종의 메모리 ..
딥러닝과 머신러닝 딥러닝과 머신러닝은 다르지 않다고 말하는 이들이 많다. 하지만 이를 구분하는 아주 명확한 척도가 있다. 머신 러닝딥 러닝분류 기준Label 이용에 따라서 분류를 함- Supervised Learning- Unsupervised Learning- Reinforcement LearningLabel에 따른 분류가 아닌 Learning 구조(방법)에 따른 분류- Supervised Deep Learning- Unsupervised Deep Learning- Deep Reinforcement Learning Shallow Learning딥러닝의 반댓말은 Shallow Learning 이다.Shallow Learning : Input에서 Output으로 도출되는 알고리즘이 1단계Deep Learning : Inpu..
Intra-class Variability / Inter-class Variability 딥러닝은 Feature Learning이다. Feature를 스스로 찾아주지만, 많은 데이터를 필요로 한다. 최대한 좋은 피쳐를 찾아서 데이터 셋을 구성해야 효율이 올라간다. - Intra-class Variability: 개별 Class의 분산- Inter-class Variability: Class 간의 분산Classification의 성능이 가장 높게 나오는 경우는 1,1 배열에 있는 경우이다. 일반적인 Real Data는 2,2 배열에 있는 경우와 같이 각 데이터의 필드가 섞여있다. 모델의 목적에 따라 Inter-class Variability는 작고, Intra-class Variability는 큰 데이터 셋으로 정돈하여 Input을 만들어주는 것이 중요하다.  예시)성적(Y)를 예측하라.X: ..
모델 성능 평가 / Accuracy vs Precision, and Recall Accuracy, Precision, Recall은 머신러닝의 분류 모델(Classification Model)의 Distance Metric이다. 그 중 분석 결과를 해석할 때, Accuracy와 Precison의 개념은 자주 헷갈린다. Distance Metric을 명확히 알고 있어야 해석이 쉬워진다. 해석이 쉽다기 보다는, 필수적이다. 쉽게 접근하는 Distance Metric 개념 설명정확도(Accuracy): 측정값이 목표치(참 값)와 가까운 정도. 전체 정답률.정밀도(Precision): 측정을 반복했을 때, 측정값들 간에 가까운 분포 정도. 측정의 재현성의 정도. Positive 정답률.정확도(Accuracy)와 정밀도(Precision)는 통계학에서는 타당도(Validity), 신뢰도(Re..
LLM 소개, 성능향상 방법론, 논문 7가지 추천 LLM이란대규모 언어 모델(Large Language Model: LLM)은 대규모의 텍스트 데이터를 사용하여 훈련된 인공지능 모델을 가리킵니다. 대규모 언어모델은 텍스트를 인식하고 생성하는 등의 작업을 수행할 수 있는 일종의 인공 지능(AI) 프로그램입니다. LLM은 방대한 데이터 세트를 학습하므로 "대규모"라는 이름이 붙었습니다. 이 모델은 자연어 처리 및 이해에 사용되며, 문장 생성, 기계 번역, 질의응답, 요약, 감정 분석 등과 같은 다양한 자연어 이해 및 생성 작업을 수행할 수 있습니다. 이러한 모델은 머신러닝, 일반적으로 Transformer Model과 같은 일종의 신경망을 기반으로 하며, 많은 양의 데이터와 계산 리소스를 사용하여 훈련됩니다. OpenAI의 GPT 시리즈와 Google의 B..
CBOW, Skip-Gram, NNLM Word2Vec는 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를 수치화하는 방법 중 하나이다.Word2Vec 방법론설명CBOW(Continous Bag of Words)주변에 있는 단어들을 입력으로 중간에 있는 단어들을 예측하는 방법Skip-Gram중간에 있는 단어들을 입력으로 주변 단어들을 예측하는 방법 CBOWCBOW의 이해를 위해 매우 간소화된 예시를 통해 설명한다.예문 : "The fat cat sat on the mat"예를 들어서 갖고 있는 코퍼스에 위와 같은 예문이 있다고 하자. ['The', 'fat', 'cat', 'on', 'the', 'mat']으로부터 sat을 예측하는 것은 CBOW가 하는 일이다. 이때 예측해야하는 단어 sat을 중심 단어(center word)라..
워드 임베딩 (Word Embedding) 개념, 희소 표현, 밀집 표현 워드 임베딩(Word Embedding)은 단어를 벡터로 표현하는 방법으로, 단어를 밀집 표현으로 변환한다. 희소 표현, 밀집 표현, 그리고 워드 임베딩에 대한 개념을 학습한다. 1. 희소 표현(Sparse Representation)앞서 원-핫 인코딩을 통해서 나온 원-핫 벡터들은 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법이다. 이렇게 벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation) 이라고 한다. 원-핫 벡터는 희소 벡터(sparse vector) 이다.이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커진다는 점이다. 원-핫 벡터로 표현할 때는 갖..
Attention Mechanism SeqtoSeq model의 한계seq2seq 모델은 인코더에서 입력 시퀀스를 컨텍스트 벡터라는 하나의 고정된 크기의 벡터 표현으로 압축하고, 디코더는 이 컨텍스트 벡터를 통해서 출력 시퀀스를 만들어낸다. 이러한 RNN에 기반한 seq2seq 모델에는 아래와 같은 두 가지 문제로 인해, 기계 번역 분야에서 입력 문장이 길면 번역 품질이 떨어지는 현상이 나타난다.1) 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 하니, 정보 손실이 발생2) RNN의 고질적인 문제인 기울기 소실(vanishing gradient) 문제 존재 결국 seq2seq의 대안으로, Attention Mechanism이 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주기 위해 등장했다.  Attention어텐..
sequence-to-sequence 학습 전략 Auto Regressive(자기 회귀) 속성Seq2seq의 훈련 방식과 추론 방식의 차이는 근본적으로 자기회귀(AR, AutoRegressive)라는 속성 때문에 생긴다. 자기회귀란 과거의 자신의 값을 참조하여 현재의 값을 추론(또는 예측)하는 특징을 말한다. 이는 수식에서도 확인할 수 있다. 예를 들어 다음은 전체적인 신경망 기계번역의 수식이다. 이와 같이 현재 time-step의 출력값 y_t 는 인코더의 입력 문장(또는 시퀀스) X 와 이전 time-step까지의 y{ 과거에 잘못된 예측을 했을 경우 시간이 지날수록 더 큰 잘못된 예측을 할 가능성을 야기하기도 한다. 또한 과거의 결괏값에 따라 문장(또는 시퀀스)의 구성이 바뀔 뿐만 아니라, 예측 문장 (시퀀스)의 길이마저도 바뀐다. 학습 과정에서..
sequence -to-sequence (seq-2-seq) 기계 번역 분야(번역기)에서 대표적으로 사용되는 모델내부가 보이지 않는 커다란 블랙 박스에서 점차적으로 확대해가는 방식 RNN의 한계와 seq-2-seq의 등장 배경일반적인 RNN에서는 입력 시퀀스와 출력 시퀀스의 크기는 고정되어 있었다. 입력 시퀀스의 크기는 가변적일 수 있었으나, padding을 통해 동일한 크기로 만들어서 사용했었다. 기계 번역 분야에서는 한 언어에서 다른 언어로 번역할 때 문장의 길이가 달라질 수 있기 때문에 가변적인 출력 시퀀스에 대한 처리가 필요할 것이다.  Sequence-to-Sequence: RNN 계열의 모델을 활용한 새로운 구조인코더 아키텍쳐와 디코더 아키텍쳐의 내부는 각각 두 개의 RNN 아키텍쳐이다. 입력 문장을 받는 RNN 셀을 인코더라고 하고, 출력 문장을 출력..
[Paper Review] Sequence to sequence learning with neural networks 보호되어 있는 글입니다.
확률론적 앵무새와 Language Model Wiki에서는 Language Model을 다음과 같이 설명하고 있다."A statistical language model is a probability distribution over sequences of words."이 설명은 참 명료하다.  Language Model은 크게 통계에 기반한 모델과 인공 신경망을 이용한 모델로 나뉜다. 인공 신경망을 이용한 모델이 최근 좋은 성능을 보여주고 있고, 대부분 통계에 기반한 모델은 연구를 위해서만 사용하는 추세이다. 혹자는 통계에 기반한 모델은 이제 사양된 것 아니냐고도 한다. 하지만 Large Language Model의 위험성은 "확률론적 앵무새"로 널리 알려진 논문에서도 지적되었다. (논문: On the Dangers of Stochastic Parr..
Google Trend 로 본 Language Model Language Model 에 대한 트렌드를 확인하기 위해 Google Trend를 이용하여 간단하게 추세 그래프를 그려보았다.최근 5년간 꾸준히 Language Model 에 대한 수요가 있었음을 알 수 있다. 2022년 2월 20일 ~ 26일 사이의 관심도가 최근 5년 중 가장 높았다. 지역별 관심도는 중국이 가장 높았으며, 도시 별로는 베이징이 가장 높게 Detect 되었다. 지역별 관심도는 위치 데이터가 켜져있는 동안에만 유효한 데이터이기 때문에, 간단히 참고하는 수준으로 보면 되겠다.최근의 연관 주제를 보기 위해서는, 관련 주제를 급 상승 순으로 보면 된다. 본 포스팅을 작성하는 2022년 4월 23일 기준으로 BERT, PyTorch, Transformer, Keras, Deep Learnin..