머신러닝

ML & DL

[밑시딥1] Chapter 6. 학습 관련 기술

해당 포스팅은 '밑바닥부터 시작하는 딥러닝1'을 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 6.1 매개변수 갱신 ◾ 6.1.3 SGD 단점 SGD는 매개변수의 기울기를 구해 기울어진 방향으로 매개변수 값을 갱신하는 일을 몇 번이고 반복해서 최적의 값에 다가갔다. SGD는 단순하고 구현도 쉽지만 비효율적일 때가 있다. 식 6.2는 그림 6-1의 왼쪽처럼 밥그릇을 x축 방향으로 늘인 모습이며 실제로 등고선은 오른쪽과 같이 x축 방향으로 늘인 타원으로 되어 있다. 식 6.2의 기울기를 그려보면 그림 6-2처럼 된다. 이 기울기는 y축 방향은 크고 x축 방향은 작다는 것이 특징이다. SGD는 그림 6-3과 같은 심하게 굽이진 움직임을 보여주는데 이는 비효율적인 움직임이다...

Python

[pytorch] transpose, permute 함수

pytorch로 permute 함수를 사용하다가 transpose랑 비슷한 것 같은데 정확히 차이를 모르고 있구나 싶어서 찾아보고 기록하기 위해 해당 포스트를 작성하게 되었다. ◾ permute() 먼저, permute 함수는 모든 차원을 맞교환 할 수 있는 함수로 차원을 교환하면서 contiguous한 성질이 사라진다는 특징이 있다. permute() 괄호 안에 인덱스들을 바꾸고자 하는 위치대로 적어주면 된다. x = torch.rand(1, 2, 3) x1 = x.permute(2, 1, 0) >> output [3, 2, 1] 위 예시에서는 기존에 0,1,2번 인덱스를 가진 [1,2,3]을 2,1,0번 인덱스 순서로 바꿔 [3,2,1]로 바꿔주었기 때문에 output이 [3,2,1]이 되는 것이다...

Python

[pytorch] .detach().cpu().numpy()

pytorch를 사용하다 보면 모듈을 통해 나온 tensor를 사용할 일이 많은데, GPU에 올라가 있는 tensor를 이용하려면 numpy 또는 list로 변환하여야 한다. tensor를 numpy 또는 list로 변환하는 방법은 조금만 찾아보면여러 함수들이 나오긴 하지만 각 함수들을 사용하는 순서가 꽤 중요하기 때문에 자주 쓰는 방법을 기록한다. ◾ detach() pytorch는 tensor에서 이루어진 모든 연산을 기록(graph)해 놓는데 이 연산 기록에서 역전파가 이루어지게 된다. detach() 함수는 이 연산 기록에서 역전파를 중단하고 분리한 tensor를 반환한다. ◾ cpu() GPU 메모리에 올라가 있는 tensor를 CPU 메모리로 복사하는 함수이다. 이후에 numpy로 변환하기 위..

Python

[pytorch] squeeze, unsqueeze 함수

◾ squeeze 함수 squeeze 함수는 Tensor의 차원을 줄이는 함수로, 설정한 차원을 제거 해 준다. 따로 차원을 설정하지 않으면 1인 차원을 모두 제거한다. 1인 차원이 여러개 있어도 여러개 전부 다! 제거한다. import torch x = torch.rand(1,7,46,46) print(x.shape) # torch.Size([1, 7, 46, 46]) x = x.squeeze(dim=1) print(x.shape) # torch.Size([7, 46, 46]) 한가지 조심해야 할 것은 batch size가 1일 때 squeeze 함수를 사용하게 되면 batch 차원을 없애버려 validation 시 오류가 발생하게 된다. 이걸 간과하고 있어서 학습할 때 validation에서 계속 오..

논문 리뷰

[논문 리뷰] Self-Supervised Video Transformer, Kanchana Ranasinghe, Muzammal Naseer et al. (CVPR'22-Oral)

Self-Supervised Video Transformer(CVPR'22-Oral), Kanchana Ranasinghe, Muzammal Naseer et al.를 읽고 요약&정리 한 글입니다. ⏹ Abstract 본 논문에서는 라벨링이 되지 않은 비디오 데이터를 사용하여 video transformers에 대한 self-supervised training을 제안한다. 주어진 비디오에서 다양한 spatial size와 frame rates로 local 및 global spatio-temporal view를 생성하고 action의 spatio-temporal variations에 불변(invariant)하기 위해 동일한 비디오를 나타내는 다른 특징을 matching시키는 것을 추구한다. 본 논문에서 제..

ML & DL

R-CNN & Fast R-CNN & Faster R-CNN 간단 비교(feat. RPN (region proposal network))

RCNN 논문을 읽고 정리하면서 논문 하나하나를 리뷰하여 따로 포스팅하는 것 보단 각 특징들을 서로 비교하며 간단하게 정리하는게 좀 더 스스로에게 도움이 될 것 같았다. 때문에 논문에 언급된 내용들 전부가 해당 글에 있는 것이 아니라 굵직한(굵직하다고 생각된) 특징들만 있는 (간단) 비교 글임을 미리 언급한다. R-CNN (regions with CNN) R-CNN은 object detection에서 딥러닝을 최초로 적용시킨 모델이다. 이미지에 있는 data와 label을 input으로 하여 카테고리와 무관하게 물체의 region을 찾는 region proposal을 진행한다. proposal된 region으로부터 고정된 크기의 feature vector를 warping하여 CNN의 input으로 사용한..

논문 리뷰

[논문 리뷰] [StrongSORT] StrongSORT: Make DeepSORT Great Again, Yunhao Du et al., 2022

StrongSORT: Make DeepSORT Great Again, Yunhao Du et al., 2022을 읽고 요약한 글입니다. ⏹️ Abstract 기존의 다중 객체 추적(MOT) 방법은 tracking-by-detection 및 joint-detection-association paradigm으로 분류할 수 있다. 후자가 더 많은 관심을 끌었고 전자에 비해 비슷한 성능을 보여주었지만, 본 논문은 tracking-by-detection paradigm이 여전히 tracking 정확도 측면에서 최적의 솔루션이라고 주장한다. 본 논문에서는 classic tracker DeepSort를 다시 살펴보고 detection, embedding 및 association 등 다양한 측면에서 업그레이드 한다(S..

논문 리뷰

[논문 리뷰] [DeepSORT] SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC, Nicolai Wojke et al., 2017

SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC, Nicolai Wojke et al., 2017(DeepSORT)을 읽고 요약한 글입니다. ⏹️ Abstract 단순 온라인 및 실시간 추적(SORT)은 단순하고 효과적인 알고리즘에 초점을 맞춘 다중 객체 추적(MOT)에 대한 실용적인 접근법이다. 본 논문에서는 SORT의 성능을 향상 시키기 위해 외관(appearance) 정보를 통합한다. 이로 인해 더 오래 occlusion된 객체를 추적할 수 있어 ID 스위치의 횟수를 효과적으로 줄일 수 있다. 본 논문은 visual appearance space에서 가장 가까운 이웃 쿼리를 사용하여 measurement-to-track asso..

ML & DL

기울기 소실(Gradient Vanishing)과 폭주(Exploding) 해결 방법 | ReLU 함수와 Leaky ReLU 함수, 그래디언트 클리핑(Gradient Clipping), 배치 정규화(Batch Normalization)

기울기 소실 (Gradient Vanishing) 기울기 소실(Gradient Vanishing)이란 역전파(Backpropagation) 과정에서 입력층으로 갈수록 기울기(Gradient)가 점차적으로 작아지는 현상이다. 이는 신경망 구조에서 레이어가 늘어날 수록 악화되며 입력층에 가까운층들에서 가충치들이 제대로 업데이트 되지 않아 최적의 모델을 찾지 못하게 된다. 따라서 기울기 소실 문제는 신경망의 활성화 함수의 미분 결과 값(도함수 값)이 계속 곱해지면서 가중치에 따른 결과값의 기울기가 0이 되어 경사하강법(Gradient Descent)을 이용할 수 없게 된다. 기울기 폭주 (Gradient Exploding) 기울기 폭주는 기울기 소실과 반대되는 경우이다. 기울기가 점차 커져 가중치들이 비정상적..

ML & DL

사이킷런으로 구현하는 머신러닝(simple ver.) | 데이터셋, 사이킷런 알고리즘, 회귀 문제, 분류 문제

sciPy와 Toolkit을 합쳐서 만들어진 사이킷런(Scikit-Learn)은 파이썬 기반 머신러닝용 라이브러리이다. 사이킷런을 이용하면 머신러닝 알고리즘을 구현할 수 있다. 먼저, 사이킷런에서 제공하는 데이터셋은 특성행렬(Feature Matrix)과 타겟벡터(Target Vector)로 NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matrix를 이용해 나타낼 수 있다. 특성행렬은 입력 데이터를 의미하며 [n_samples, n_features] 형태의 2차원 배열 구조를 사용한다. (n_samples: 행의 개수(표본의 개수), n_features: 열의 개수(특성의 개수)) 특성행렬은 NumPy의 ndarray, Pandas의 DataFrame, SciP..

토오오끼
'머신러닝' 태그의 글 목록