본문 바로가기

분류 전체보기

(120)
해석학적 미분과 수치 미분 개요 1. 해석학적 미분이란? 2. 수치 미분이란? 3. 전방, 후방, 중앙 차분 4. 마무리 실제로 신경망 학습의 backpropagation에서 gradient를 구하기 위해서 쓰이는 미분 방식은 아니지만, backpropagation 과정에서 미분이 사용되는 것은 명확하다. 그 이유는 gradient descent를 위해서는 기울기값을 구해야 하기 때문이다. -> backpropagation에서 gradient를 구할 때는, 미분식을 구해놓고 거기에 x만 대입해서 기울기값을 구하는 식과 가깝다. 따라서, 미분에 대해 알아보려고 한다. 미분은 두 가지로 나누어 설명할 수 있다. -> 해석학적 미분, 수치 미분 1. 해석학적 미분이란? 해석학적 미분은 수학에서 원하는 진정한 미분값을 구하는 것이라고 할..
Training with SAM optimizer 개요 Accumulation을 사용하는 상황에서 sam optimizer를 사용할 때 어떻게 학습 코드를 작성하면 좋을지 알아보자! Task는 QA(mrc) task로 설정한다. 1. Sam optimizer 기본 사용법 2. Accumulation을 적용한다면? 3. 마무리 1. Sam optimizer 기본 사용법 Sam optimizer를 사용하는 데에 있어서 다른 optimizer와의 차이점은 바로 두 가지가 있다. - loss backward를 2번 밟는다. - optimizer의 step을 2번 밟는다. 그렇다면 이에 대한 코드를 어떻게 작성해야 하는 걸까? 정말 다행스럽게도, 이곳에 sam optimizer를 사용하는 기본적인 방법에 대해 설명이 되어 있다. 위에서 설명했던 차이점 그대로 m..
@classmethod, @property 개요 데코레이터의 역할을 하는, @classmethod와 @property는 어떤 기능을 하는지 알아보자. 1. @classmethod 2. @property 3. 마무리 1. @classmethod @classmethod를 사용한 결과 직관적으로 그냥 바로 classmethod를 사용하면 어떻게 함수를 사용할 수 있는지 확인해보자. class Person: def __init__(self, name: str="Kang", age: int=20) -> None: self.name = name self.age = age @classmethod def cal_age(cls, year): # cls가 받는 것은 객체가 아닌 클래스 print(f"현재 나이: {cls(age=50).age}") return f"..
Flat minima VS Sharp minima 개요 Flat minima와 sharp minima의 특징을 알아보자. 1. Flat minima 2. Sharp minima 3. 마무리 1. Flat minima 위에서 볼 수 있는 사진으로 우리는 flat minimum과 sharp minimum이 어떤 모양인지 확인할 수 있다. 검정색 선은 training data에 대한 inference를 했을 때의 loss 값을 나타낸 graph이고, 빨간색 점선은 test data에 대한 inference를 했을 때의 loss 값이라고 보면 된다. training data와 test data는 다를 것이기 때문에, data가 다르다는 것을 표현하기 위해 조금 shifted 되어 있다. Flat minima의 특징 모델이 flat minima에 수렴하게 되면 ..
When an activation function is non-zero centered why it invokes zig-zag path? https://rohanvarma.me/inputnormalization/ Downsides of the sigmiod activation and why you should center your inputs Software Engineer @ Facebook rohanvarma.me
Contiguous는 도대체 뭘까? 개요 torch에 존재하는 contiguous()가 도대체 어떤 method인지 알아보자. 1. contiguous란 무엇인가? 2. 마무리 Contiguous란 무엇인가? Contiguous의 의미 무작정 contiguous라는 영단어의 의미부터 살펴보자면 "인접하고 있는", "근접한"이라는 의미가 나타난다. 어떤 메시지를 전달하려는지는 파악이 되지 않더라도 contiguous가 뭔가가 붙어있어야 한다는 뉘앙스를 풍긴다는 것만 인지하자! Contiguous의 이해 t = torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]) 위와 같은 tensor가 하나 있다고 생각해보자. t라는 tensor는 현재 아래와 같은 모양으로 저장되어 있다. 그렇다면 메모리..
Pruning이란? https://techy8855.tistory.com/17 [논문 정리] Learning both Weights and Connections for Efficient Neural Networks 최근 model compression 에 관심이 생겨, 논문을 찾아보던 와중, 인용 수가 높아보여서 읽어본 논문이다. 코드는 해당 깃헙을 참고하였다. 해당 논문은 network pruning 기법을 사용한다. network pruning 이란 techy8855.tistory.com
What is Learning Rate Warmup? 개요 Mini-batch SGD를 사용했을 때, Learning에 도움을 주었다고 하는 Learning rate warmup이 무엇인지 알아보자. 1. Learning rate warmup? 2. Learning rate warmup의 용법 3. 마무리 Learning rate warmup? Learning rate warmup이 왜 필요한가? Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour라는 논문에서 제시된 학습 방법 중 하나이다. 위의 논문을 작성한 연구진은 minibatch 학습을 할 때, Learning rate를 scaling하는 것에 있어서 효과적인 rule를 발견했다고 한다. 그 rule의 이름은 Linear Scaling Rule로..
Learning Rate Schedulers(PyTorch) https://dacon.io/codeshare/2373 다양한 Learning Rate Scheduler(pytorch) 월간 데이콘 제 2회 컴퓨터 비전 학습 경진대회 dacon.io
torch.gather https://pajamacoder.tistory.com/2 [pytorch] torch.gather 설명 pytorch 코드를 분석하다 torch.gather() 메서드의 동작이 헷갈려 정리해 본다. torch.gather() 메서드는 input tensor로 부터 원하는 차원에서 주어진 index에 해당하는 원소만을 골라 새로운 텐서를 만들때 사 pajamacoder.tistory.com