Learning Log 18

[NN] RNN 기울기 소실의 원인

e3에 영향 미치는 정도 = state3 미분값 정보 + state2 미분값 정보 + state1 미분값 정보 이렇게 연쇄적으로 길어짐 시퀀스가 매우 길어지는 경우 문제가 발생할 수 있음 (input이 100 토큰 정도 되는 경우) 기울기값이 1보다 작은 경우 --> 100번 곱하면 0에 가까워짐 = 기존 w와 차이가 없어지는 셈 = lr에 0이 곱해지는 셈 기울기값이 1보다 큰 경우 ---> 100번 곱하면 w가 매우 커짐, 그리고 왔다갔다 함 = 한 곳으로 수렴하지 않음 출처: - https://velog.io/@seojeongbin/%EA%B8%B0%EC%9A%B8%EA%B8%B0-%EC%86%8C%EC%8B%A4%EB%B0%8F-%ED%8F%AD%EB%B0%9C-%EA%B7%B8%EB%A6%AC%..

Learning Log 2023.09.06

[Transformer] masked_fill 연산과 mask의 &(and) 연산

1. masked_fill import torch example = torch.FloatTensor([[1, 2, 3], [4, 5, 6]]) mask = torch.FloatTensor([0, 1, 1]) # 1차원이든 2차원이든 상관 없음 result = example.masked_fill(mask==0, 5.5) print(result) # tensor([[5.5000, 2.0000, 3.0000], # [5.5000, 5.0000, 6.0000]]) mask와 example의 모든 차원이 동일하지 않아도 된다! 이 경우 mask를 각 행마다 적용해준다. 2. 트랜스포머 pad_mask와 lookahead_mask의 & 연산 pad_mask = torch.tensor([[[[True, True, T..

Learning Log 2023.08.30

[Python] 2차원 리스트에 대한 접근

2차원 리스트를 만들고 요소 하나에 접근해서 값을 바꾸려고 했는데, 자꾸만 모든 요소들에 대해 적용이 되는 현상을 발견했다. [[]]*20000 이런 방식으로 하면 리스트 안의 요소 리스트들이 모두 같은 참조값을 갖는 듯 하다고 한다. 이럴 때는 list comprehension으로 할당을 해주면 문제가 해결된다고 한다. arr = [[] for i in range(N+1)] 출처: 1. https://velog.io/@ledcost/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B9%88-2%EC%B0%A8%EC%9B%90-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%84%A0%EC%96%B8

Learning Log 2023.08.27

[Python] list에 sorted 함수 적용시

백준 11650번 문제를 풀다가 list에 sorted 함수를 적용하면 어떻게 되는지 보게 되었다. import sys input = sys.stdin.readline n = int(input()) arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) arr = sorted(arr) for a in arr: print(*a) # [입력] # 5 # 3 4 # 1 1 # 1 -1 # 2 2 # 3 3 # [출력] # 1 -1 # 1 1 # 2 2 # 3 3 # 3 4 [x, y] 좌표값들로 구성된 2차원 리스트를 만들고 sorted 함수를 적용하면, 우선 x좌표가 증가하는 순으로, 만약 x좌표가 같으면 y좌표가 증가하는 순서로 알아..

Learning Log 2023.08.26

[Python] list의 append 메서드와 메모리

백준 10989번 문제를 풀다가 메모리 초과 오류와 마주했다. # 기존 코드 import sys input = sys.stdin.readline n = int(input()) l = [] for _ in range(n): new = int(input()) l.append(new) l = sorted(l) for i in l: print(i) append 메서드가 동작하는 방식이 메모리 초과 오류와 관련이 있다고 해서 살펴봤는데, "메모리 재할당", "공간 확장 및 이사"와 같은 내용들을 확인할 수 있었다: - append라는 함수 자체가 기존에 할당된 공간을 확장해야 하기 때문에, 만약에 연속된 메모리의 자리가 없을 경우 새롭게 큰 공간을 만들어 모든 값들을 이사시켜야 하는 단점이 있습니다. 여기서 바로..

Learning Log 2023.08.25

[BERT] BertTokenizer argument 중 text input에 대한 실험

의문 지점: - BertTokenizer에서 text argument로서 리스트가 연달아 두 개 나오면 어떻게 처리하는지? 해결: (예시 1) --> 스크랩 sample1 = 'What do you like country?' sample2 = 'I love Seoul' tokenizer.encode_plus(sample1, sample2, max_length=20, padding='max_length') # {'input_ids': [101, 2054, 2079, 2017, 2066, 2406, 1029, 102, 1045, 2293, 10884, 102, 0, 0, 0, 0, 0, 0, 0, 0], # 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0..

Learning Log 2023.08.23

[Python] 클래스 __getitem__ 메서드와 이터레이터

의문 지점: (BERT Fine-Tuning for Text Classification: Sentence-Pair Classification) - samples는 위처럼 __getitem__메서드가 정의된 BertDataset Class의 객체이다. 해결: iterator_getitem.py class Counter: def __init__(self, stop): self.stop = stop def __getitem__(self, index): if index < self.stop: return index else: raise IndexError print(Counter(3)[0], Counter(3)[1], Counter(3)[2]) for i in Counter(3): print(i, end=' '..

Learning Log 2023.08.23

[GEN] Self-Instruct

논문 제목: Self-Instruct: Aligning Language Models with Self-Generated Instructions - 사람이 직접 제작한 seed dataset을 기반으로 LLM을 통해 data augmentation을 한다. 전체적인 flow 1. 사람이 직접 작업한 175개의 seed data를 가지고, few shot을 통해 어떤 task가 필요할지 LLM을 통해 instruction 생성 2. instruction마다 output이 다르기 때문에, few shot을 통해 이것이 분류 문제인지 아닌지 파악한다. >>> 분류문제면 instruction과 label을 먼저 줘서 data를 생성 -- label 미리 줘야 bias 없이 잘 생성하기 때문 >>> 분류문제 아니면..

Learning Log 2023.08.22

[GEN] prompt engineering vs. prompt tuning (+PEFT, ICL)

1. prompt engineering (uses manually-provided “hard prompts”) - 우리가 기대한대로 LLM이 좋은 답을 주는 Prompt를 찾는 노력을 Prompt Engineering이라고 한다. - In-context learning (ICL) is a specific method of prompt engineering where demonstrations of the task are provided to the model as part of the prompt (in natural language); fine tuning과 다르게 LLM 자체는 건드리지 않고, inference 시에(질문할 때) 질문을 잘 해보자는 접근이다. 질문할 때 예시를 몇개 주느냐에 따라 ze..

Learning Log 2023.08.22