본문 바로가기

딥러닝

(19)
[논문리뷰] Time is Encoded in the Weights of Finetuned Language Models Abstract언어 모델을 새로운 시간 기간에 맞추기 위한 간단한 도구인 시간 벡터를 제시시간 벡터: 언어 모델을 특정 시간(예: 연도 또는 월)의 데이터로 세세하게 조정한 후 원래 사전 훈련된 모델의 가중치를 뺀 것실험 결과에 따르면, 이 벡터는 해당 시간 기간의 텍스트에서 성능을 향상시키는 가중치 공간에서의 이동 방향을 지정인접한 시간 기간에 특화된 시간 벡터는 매니폴드 내에서 서로 더 가까이 위치이 구조를 활용하여 시간 벡터 사이를 보간하여 어떠한 추가 훈련 없이 중간 및 미래 시간 기간에 더 나은 성능을 발휘하는 새로운 모델을 유도할 수 있음다양한 작업, 도메인, 모델 크기 및 시간 척도에서 결과의 일관성을 입증결과적으로, 이 연구는 시간이 세세하게 조정된 모델의 가중치 공간에 인코딩되어 있음을 ..
[논문리뷰] Towards Large Language Models as Copilots for Theorem Proving in Lean 0. AbstractTheorem proving - LLM에 있어 중요한 challenge문제 : 존재하는 LLM기반 provers는 인간의 직관 없이 완전히 자율적인 모드로 정리를 증명하려고 노력했으나 어려움 → LeanDojo해당 논문에서는 LLM을 copilot으로..
8장 : 어텐션 8.1 어텐션의 구조 8.1.1 seq2seq의 문제점 seq2seq에서 Encoder의 출력은 고정 길이 벡터 고정 길이 벡터 - 입력 문장의 길이에 관계없이 항상 같은 길이의 벡터로 변환 -> 필요한 정보가 벡터에 다 담기지 못하게 됨 8.1.2 Encoder 개선 Encoder출력의 길이를 입력 문장의 길이에 따라 바꿔줌 -> 시각별 LSTM계층의 은닉 상태 벡터를 모두 이용 -> 입력된 단어와 같은 수의 벡터 각 시각의 은닉 상태에는 직전에 입력된 단어에 대한 정보가 많이 포함되어 있음 -> hs : 각 단어에 해당하는 벡터들의 집합 8.1.3 Decoder 개선 ① 기존 Decoder - Encoder의 LSTM 계층의 마지막 은닉 상태만을 이용 -> hs 전부를 활용할 수 있도록 Decoder..
7장 : RNN을 사용한 문장 생성 7.1 언어 모델을 사용한 문장 생성 7.1.1 RNN을 사용한 문장 생성의 순서 'I' 라는 단어를 입력으로 주면 다음에 출현하는 단어의 확률분포를 출력함 이 결과를 기초로 다음 단어를 새로 생성하려면 1) 확률이 가장 높은 단어를 선택하는 방법 - 결정적 결정적 : 결과가 일정하게 정해지는 것 2) 확률적으로 선택하는 방법 각 후보 단어의 확률에 맞게 선택하는 것, 확률이 높은 단어는 선택되기 쉽고, 낮은 단어는 선택되기 어려움 선택되는 단어(샘플링 단어)가 매번 다를 수 있음 7.1.2 문장 생성 구현 ##RnnlmGen 클래스 구현 class RnnlmGen(Rnnlm): def generate(self, start_id, skip_ids=None, sample_size=100): #statr_i..
6장 : 게이트가 추가된 RNN 6.1 RNN의 문제점 6.1.1 RNN 복습 6.1.2 기울기 소실 또는 기울기 폭발 기울기 소실 : 시간을 거슬러 올라갈수록 기울기가 작아짐 기울기 폭발 : 시간을 거슬러 올라갈수록 기울기가 커짐 6.1.3 기울기 소실과 기울기 폭발의 원인 역전파에서 차례로 tanh -> + -> MatMul 연산 통과 tanh - 미분값 그래프 : 1.0이하, x가 0으로부터 멀어질수록 작아짐 => 역전파에서 기울기가 tanh 노드를 지날 때마다 값이 계속 작아짐 MatMul - 시계열 데이터의 시간 크기만큼 매번 똑같은 Wh가중치가 행렬 곱에 사용됨 N = 2 #미니배치 크기 H = 3 #은닉 상태 벡터의 차원 수 T = 20 #시계열 데이터의 길이 dh = np.ones((N, H)) np.random.seed..
5장 : 순환 신경망(RNN) 지금까지의 신경망 - 피드포워드 (feed forward) 신경망 -> 시계열 데이터 다루지 못한다는 단점 => 순환 신경망 RNN 등장 5.1 확률과 언어 모델 5.1.1 word2vec을 확률 관점에서 바라보다 지금까지는 맥락을 좌우 대칭으로 생각해옴 -> 맥락을 왼쪽 윈도우만으로 한정 5.1.2 언어 모델 단어 나열에 확률 부여 특정한 단어의 시퀀스에 대해 그 시퀀스가 일어날 가능성을 확률로 평가 수식적 설명 W1,...,Wm이라는 m개 단어로 된 문장 단어 W1,...,Wm이라는 순서로 출현할 확률 : P(W1,...,Wm) -> 동시 확률 (여러 사건이 동시에 일어날 확률) 사후 확률을 사용하여 분해 가능 (확률의 곱셈정리에 의해) 파이 기호 : 모든 원소를 곱하는 총곱 -> 사후확률 : 타깃 ..
4장 : word2vec 속도 개선 앞 장의 단순한 word2vec에 두 가지 개선 추가 1) Embedding 계층 도입 2) 네거티브 샘플링이라는 새로운 손실 함수 도입 4.1 word2vec 개선 ① 거대한 말뭉치를 다루게 되면 두 계산의 병목 발생 -> 계산에 많은 시간 소요 1) 입력층의 원핫 표현과 가중치 행렬 W_in의 곱 계산 -> Embedding 계층으로 해결 2) 은닉층과 가중치 행렬 W_out의 곱 및 softmax 계층의 계산 -> 네거티브 샘플링 손실 함수로 해결 4.1.1 Embedding 계층 -> 결과적으로 행렬의 특정 행을 추출하는 것 => 단어ID에 해당하는 행을 추출하는 계층 (Embedding 계층) Embedding 계층에 단어 임베딩(분산 표현) 저장 단어의 밀집벡터 표현 : 단어 임베딩, 분산 표..
3장 : word2vec 추론 기반 기법 3.1 추론 기반 기법과 신경망 단어를 벡터로 표현하는 방법 - 통계 기반 기법, 추론 기반 기법 -> 모두 분포 가설이 배경 3.1.1 통계 기반 기법의 문제점 대규모 말뭉치를 다룰 때 문제 발생 SVD를 nxn 행렬에 적용하는 비용은 O(n^3) 통계 기반 기법은 1회의 처리만에 단어의 분산 표현 얻음 추론 기반 기법에서는 신경망을 이용해 미니배치로 학습 -> 학습 샘플씩 반복해서 학습하며 가중치 갱신 -> 계산량이 큰 작업 처리 가능, GPU 이용한 병렬 계산 가능 3.1.2 추론 기반 기법 개요 추론 : 주변 단어(맥락)가 주어졌을 때 ?에 무슨 단어가 들어가는지 추측하는 작업 추론 문제를 반복해서 풀면서 단어의 출현 패턴 학습 모델 - 맥락 정보를 입력받아 각 단어의 출현 확률을..