Batch 학습을 위해 사용할 데이터가 너무 많을 때 한 번에 학습시키는데 비용이 많이 들기 때문에 여러 개의 그룹으로 나누어 학습한다. 이때 나누어진 그룹을 Batch라고 한다. Batch Normaliztion Batch Normalization은 layer를 통과할 때마다 데이터 분포가 달라지는 Internal Covariate Shift를 해결할 수 있다. 따라서 정규화를 통해 안정적으로 학습될 수 있도록 한다. 정규화 스케일링 정규화란 데이터의 분포를 N(0, 1)로 조정하는 과정이다. 다시 말해 평균을 0, 분산을 1로 조정하는 과정이다. 아래 그래프에서 초록색 그래프가 정규화된 그래프이다. batch마다 분포가 다르기 때문에 정규화를 통해 일정하게 학습이 되도록 한다. 그렇기 때문에 정규화는..
Impurity 만약 초록 동그라미와 주황 네모를 두 상자에 분류하는 문제를 푼다고 가정하자. A와 B를 비교했을 때 A가 더 잘 분류했다고 할 수 있다. 그 이유는 A의 두 상자 안에 들어있는 도형이 더 일관성 있기 때문이다. 이러한 개념을 불순도(impurity)로 설명한다. 위 상황에서는 B의 불순도가 더 높다고 할 수 있다. 그리고 불순도를 나타내는 대표적인 지표가 엔트로피(entropy)와 지니 불순도(Gini impurity)이다. Entropy $Entropy(t)=-\sum_i^c p(i|t)log_2p(i|t)$ Gini Impurity $Gini(t)=1-\sum_i^c p(i|t)^2$ * p(i|t)는 노드 t에서 i 레이블에 속한 데이터의 비율을 뜻한다. 계산 예시 데이터: [ 1..
문제 만약 "I do not want it"라는 문장이 있다면, 해당 문장이 긍정인지 부정인지 분류하는 문제를 푼다고 생각하자. 해당 문제를 아래와 같이 표현할 수 있다. $P(positive | I, do, not, want, it)$ $P(negative | I, do, not, want, it)$ 위 수식을 자세하게 분석해 보면 [I, do, not, want, it]이 문장에 있을 때, positive일 확률과 negative일 확률을 각각 계산하는 것이다. 만약 positive가 더 크면 긍정, 반대면 부정을 뜻한다. Bayes rule 활용 베이즈 정리를 활용하면 위 문제를 쉽게 풀 수 있다. $P(label | tokens)=\cfrac{P(tokens | label)P(label)}{P(t..
이 글은 기술적으로 어떤 방식이 더 빠른가를 테스트하기보다 실제 많이 사용하는 패턴을 중심으로 어떤 패턴이 속도가 빠른지를 측정해 보았다. 실험 내용 목적: Python_list 또는 Numpy_array의 각 요소에 1을 더한 후 결과를 반환한다. (예: [0, 1, 2, 3] → [1, 2, 3, 4]) 방법: 한 패턴 당 총 3번의 실행 시간을 측정하고 평균값을 구한다. comp_Py_list: 1.042 # list comprehension map_Py_list: 1.432 # list(map(...)) for_Py_list: 1.589 # for i in Py_list add_Np_array: 0.016 # + (operator) def_Np_array: 0.026 # pre-defined 'a..
때로는 Python 코드를 짜는 거보단 Linux 명령어를 사용하면 편리하게 처리할 수 있는 것들이 있다. 그래서 파이썬 스크립트 내에서 쉘 명령어를 실행하는 방법을 알아보았다. 참고로 아래 내용은 Python 3.10에서 테스트한 코드이다. !command 주피터 노트북에서는 ! (느낌표)를 이용해 명령어를 실행할 수 있다. !ls 그런데 이 방법은 주피터 노트북(.ipynb)에서만 가능하다. subprocess subprocess 모듈에는 쉘 명령어를 실행할 수 있는 다양한 방법이 존재하지만 그 중 run 함수가 있다. import subprocess # subprocess.run(명령어) subprocess.run("ls") subprocess.run("ls", cwd="./projectC") 문자..