전체 글 153

[백준 | 파이썬3] 10814 나이 순 정렬

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 나이 순으로 정렬할 수 있도록 정렬기준을 age로 설정하였다. > 정답코드 > 배운점 파이썬의 sort 메소드는 값이 같은 원소의 경우 선후관계가 바뀌지 않는 stable sort알고리즘을 사용한다. 따라서, 아래와 같이 선후관게 i를 튜플에 추가하고 정렬기준으로 설정할 필요가 없다. 문자열 형태의 숫자로 정렬하면 string 형식으로 정렬된다. age는 문자열 형태의 숫자이기 때문에 string형식으..

이산확률분포 총정리(베르누이,이항,다항,포아송,기하,음이항)

이번 포스팅에선 총 여섯가지의 이산확률분포를 정리하고, python의 scipy패키지를 통해 몇가지 그래프를 출력해보고자한다. 포스팅에서 다룰 여섯가지 분포는 다음과 같다. - 베르누이 분포 - 이항분포 - 다항분포 - 포아송분포 - 기하분포 - 음이항 분포 ▶ 베르누이분포 Bernoulli trial 베르누이 시행이란, 결과가 두가지 중 하나로만 나오는 실험이다. 베르누이 확률변수란, 두가지 중 하나로 나온 베르누이 시행의 결과를 실수 0 또는 1로 바꾼것을 말한다. 베르누이 분포란, 베르누이 확률변수의 분포를 일컫는다. 즉 시행횟수가 1번이고 한번의 시행결과가 성공(1) 혹은 실패(0)로만 나눠지는 분포를 베르누이 분포라고 한다. ▷ 분포함수 $$ P(x) = p^x(1-p)^{1-x}$$ - $x$..

수학/통계학 2022.02.18

Object Detection model - R CNN부터 Fast(er) R CNN까지

다음 도표는 딥러닝을 활용한 이미지 내 객체 검출(Object Detection) 모델의 milestone을 찍은 것이다. 최근으로 올수록 새로운 모델들이 점점 많아지는 것을 볼 수 있다.. 오늘은 이 많은 모델들 중 2014 ~ 2016 년까지 발전해온 R-CNN계열 모델인, - R-CNN (2014) - Fast R-CNN (2015) - Faster R-CNN (2016) 에 대해서 정리해보려고 한다. 우선 해당 모델들을 이해하는 데 필요한 개념 먼저 짚고 가보려고 한다. ▶ 사물인식 방법 이미지 내에서 사물을 인식할 때 대표적으로 다음 네가지 방법이 존재한다. Classification : 하나의 이미지를 입력으로 받은 후 해당 이미지가 어떤 클래스에 해당하는지 분류하는 방법이다. Classifi..

CNN 모델 훑어보기

▶ 네트워크 모델의 발전 파라미터 수가 많으면 overfitting의 문제가 발생한다. 따라서 네트워크 모델은 이 파라미터 수를 줄여 일반화 성능을 올리는 방향으로 발전해왔다. 이와 동시에 네트워크 깊이는 키움으로써 더 딥한 학습을 가능케하는 방향으로 발전되어왔다. 해당 포스팅에서는 - AlexNet - VGGNet - GoogLeNet - ResNet - DenseNet 순으로 모델의 발전과정을 짚어보고자 한다. ▶ AlexNet - 네트워크가 2개로 나눠져있다. 당시 GPU숫자가 부족했기 때문에 2개의 GPU를 최대로 사용하기 위해 이러한 구조가 나온것이라고 한다. - 11 x 11의 input을 사용한다. 이 필터를 사용하면 하나의 kernal이 볼 수 있는 영역은 커지지만 상대적으로 파라미터는 더..

Partial Dependence Plot (PDP) 란?

▶ Partial Dependence Plot이란? 기본적으로 tree기반의 모델은 선형회귀분석 같이 함수식을 통해 입력과 출력의 관계를 알기 힘들다. tree기반 모델은 information gain을 기준으로 샘플을 부분집합으로 나누는데 집중하기 때문이다. 따라서 tree기반의 모델 중 하나인 RandomForest는 black box모델(어떻게, 무엇을 근거로 모델의 결과가 도출되었는지 알 수 없는 모델)까지는 아니지만 선형모델이나 일반 tree모델에 비해서는 해석이 어렵다. PDP(Partial Dependence Plot)은 이러한 모델에서 입력과 출력의 관계를 알아볼 수 있도록 시각화하는 그래프이다. 이 그래프는 입력과 출력의 직접적인 관계를 추론하지는 않는다. 대신 하나 혹은 두 개의 변수가..

p-value란? / p-value 사용 시 주의할 점

p-value, 통계학, 데이터 분석 등을 공부하다 보면 꽤 자주 마주치는 값이다. 유의성 검정 시 '차이가 유의하다고 판단하려면 p-value가 0.05보다 낮아야 한다.'라고 알고 있고, 또 그렇게 사용해왔다. 그런데 막상 누군가 나에게 p-value에 대해서 설명해보라고 한다면 '유의성 검정할 때 사용하는 값인데 이 값이 0.05 혹은 0.01보다 작을 때 통계적으로 해당 사건은 유의한 인과관계를 가지고 있다고 판단합니다!'라고 밖에 설명할 수 없다. 따라서 이번 포스팅에선, p-value에 대해 명확히 알고 더 나아가서 이를 해석할 때 주의할 점은 무엇이고 이 값이 정말 통계적으로 믿을만한 지표인 것인지 알아보고자한다. ▶ p - value (Probability - value) 란 무엇일까 위키..

수학/통계학 2022.01.28

OOM (Out Of Memory) 해결 방법

▶ OOM OutOfMemory, 학습을 시키다보면 적지않게 마주치는 에러이다. 이 에러를 보면 배치 사이즈를 줄이거나 캐시를 비우는 방식으로 처리했었는데 그 이외의 방법들(?)도 알게되어 포스팅으로 정리해보려한다. ▷ GPUtil 활용하기 - iter마다 메모리가 늘어나는지 확인할 수 있는 모듈이다. - nvidia-smi처럼 GPU 상태를 보여주는 모듈이다. 다만 nvidia-smi는 현재시점의 스냅샷을 보여줄 순 있지만 iteration이 돌아가며 쌓이는 메모리는 보여줄 수 없다. 반면 GPU util은 이를 보여줄 수 있다. - nvidia smi output 예시 아래와 같이 특정 timestamp에 해당하는 gpu의 상태를 확인할 수 있다. - GPUtil 예시 아래와 같이 GPU ID, 사용..

Custom Dataset tutorial - Fashion MNIST

Dataset과 Dataloader로 fashion- MNIST데이터를 불러오고 커스텀하는 방법을 실습해보았다. 코드는 pytorch tutorials에서 다운받을 수 있다. ▶ Fasion MNIST 60,000개의 train과 10,000개의 test 데이터로 이뤄져있다. 각각의 예제는 28x28의 흑백이미지로 구성된다. 라벨은 총 10개의 클래스로 이뤄져 있다. 데이터 셋은 torchvision의 datasets에서 다운받을 수 있다. datasets.FashionMNIST에 들어가는 인자는 다음과 같다. - root: train과 test데이터 셋이 저장될 장소 - train: train 데이터인지 test데이터인지 bool로 설정 - download= True: 인터넷에서 다운로드 받을건지 bo..

순전파와 역전파

역전파는 해당 층과 연관되는 관계를 따라서 그래프를 계산하고, 그 경로에 있는 모든 변수값들을 저장해놓고 활용해야한다. 따라서 역전파는 순전파보다 훨씬 더 많은 메모리를 사용할 수 밖에 없다. 본 포스팅에서는 역전파의 원리에 대해서 이해하고자 링크된 페이지를 참고하여 작성한 글이다. 아래 플로우는 역전파 순서를 기준으로 작성한 것이며 해당 역전파계산과 관련된 순전파 계산을 함께 제시해서 역전파 계산 이해에 도움이 되도록 작성해보았다. 아래 그래프를 참고하며 계산을 따라가면 이해가 더 수월하다. 목적함수 J는 손실함수 L과 l2 norm 정규화항 s를 더한 정규화된 손실값이다. J를 L과 s에 대해서 각각 미분해준다. 이전의 은닉벡터 h에 가중치 w2를 곱한 값인 o와 실제값 y의 손실값을 계산한다. 출력..

정보이론 / entropy & Cross entropy & KL divergence

링크된 강의를 참고하여 작성했습니다. ▶ 엔트로피란? 정보를 표현하는데 필요한 평균 최소 자원량을 의미한다. 정보는 한국어, 영어, 필리핀어등 다양한 표현체계로 나타난다. 이 정보를 공통적으로 컴퓨터에서 0과 1 비트로 표현해 공통된 정보로 나타낼 수 있다. 여기서 이 bits 단위를 최소 자원량이라고 말한다. 정보가 등장하는 빈도수가 많을 수록, 즉 많이 사용되는 정보일 수록 자원량은 적은 것이 더 효율적일 것이다. 따라서 확률이 1에 가까우면 비트는 짧게 코딩하고 0에 가까우면 길게 코딩되도록 한다. 이 확률을 기반으로 평균 최소 자원량을 정한다. 코드의 길이는 다음 그래프에 의해 −log2Pi 가 된다. 평균 최소 자원량 구하기 위해 기댓값을 구해야 한다. 이 기댓값은 도수*확률 값들을 모두 더해서..

수학/통계학 2022.01.20