W1 학습정리

soonyear·2023년 11월 10일
0

ai-tech-review

목록 보기
1/3

2023-11-07

Pythonic code

list compression은 정말 자주 쓰기도 하고 쓸 때마다 쾌감이 있다.
ls = [i+j for i in word1 for j in word2]
iterate되는 변수 두개를 쓸 때에는

lambda

lambda x, y: x*y

사용할 변수를 쓰고, 변수로 뭘 하는지 쓰는 것 같음.
파이썬을 2년가까기 쓰면서 써볼 이유를 거의 못느꼈는데 코딩테스트 준비할 때 가끔 쓰게 되는 것 같다. 기초 파이썬 강의를 처음 들으면서 저렇게 변수 2개도 쓸 수 있는 건 처음 알았다.

map

map function은 잘 알고있었다.
코테 준비할 때 너무 자주쓴다... map(int, input().split(" "))

reduce

요즘에는 reduce를 잘 안쓴다고 한다. 나는 처음봤다.
근데 딥러닝을 하다보면 functools의 reduce는 쓰지 않더라도 reduce 함수 자체는 자주 쓰는 것 같다. 특히 PyTorch 내부를 보면 all-reduce 엄청 자주쓰는듯.

generator

yield를 써서 메모리 크기를 줄일 수 있다.
잘 사용하면 좋은 개념인듯.

unpacking, kwargs...

push/pop

push는 맨앞에 하나 추가, pop은 맨뒤 뺀다.
push는 몰랐다.
list에서 push, pop만 사용하는 함수를 만들어야 하는 경우 deque가 훨씬 효율이 좋다.

객체지향언어 (object-oriented programming, OOP)

많은 사람들이 class명을 naming할 때 Camel case로 한다.

Encapsulation 개념을 사용해서 접근 불가능한 변수 생성 가능... 언더바 두개를 변수명 앞에 쓰면 된다함 (맹글링)

args vs kwargs

args는 단순 arguments반면 kwargs는 dictionary 개념

데코레이터

...뭔진 알겠는데 어렵다.

에러

ZeroDivisionError
IndexError
FileExistError
여러가지 에러를 아래와 같이 처리할 수 있음.

try:
    # do something
except ZeroDivisionError:
	# do something
except IndexError:
	# do something
...

2023-11-08

Encoding

cp949, utf8...

정규식 | Regular expression

정규식 연습장 regexr.com
[]: 문자클래스
.: 전체

numpy

a = np.array([1,2])
b = np.array([1,2]) 일 때,
a is b 가 False라고 한다. 쇼킹하다.
근데 물론, np.array를 두개 따로 변수로 선언해놓고 두개가 같냐고 물어보는 일은 없을 것 같다. array안의 값이 같은 지 비교하면 True가 된다.

a = np.array([1, 2])
b = np.array([1, 2])
a is b = True

2023-11-09

Merge & Concat

merge에는 4종류가 있다: Inner, Outer, Left on, Right on.

Gradient descent

error = y - x@beta
grad = -transpose(x)@error
beta = beta - lr*grad

2023-11-10

확률론

loss function (손실함수)
L2 norm (Mean Squared Error): 회귀문제에서 사용한다. 실제 값과 예측값의 차이
Cross-entropy: 모델 예측의 불확실성을 최소화하는 방향으로 학습?? 이게 무슨소리인가 싶다. 예측 확률 분포와 실제 확률 분포의 차이를 보는 것이라고 생각하면 더 이해하기 쉽다. 수식은 -sum_{i=1}^{n}y_i log(hat{y_i})로 계산한다.

이산확률변수 vs 연속확률변수

이산확률변수는 셀 수 있는 값을 가집니다. 예, 동전 던지기 결과(앞면 또는 뒷면), 주사위 던지기 결과(1부터 6까지의 정수), 학급 학생 수.

연속확률변수는 연속적인 값을 가집니다. 특정 구간 안에서 어떤 값이든 취할 수 있습니다. 예, 사람의 키, 무게, 온도 측정값.

이산확률변수의 경우 각각의 개별적인 값에 대한 확률을 직접 계산할 수 있지만, 연속확률변수의 경우 특정 값에 대한 확률은 정의되지 않으며, 보통 특정 구간 안에서 변수가 어떤 값을 취할 확률을 계산함.

몬테카를로 샘플링

확률 분포를 모를 때, 데이터를 이용하여 기대값을 계산하기위해 몬테카를로 샘플링 방법을 사용한다.
몬테카를로 샘플링은 무작위로 샘플을 수집하여 이로부터 원하는 값을 추론한다.

확률분포

베르누이분포 : 바이너리
카테고리분포: n개의 이산적인 값을 가지는경우
베타분포: [0,1] 사이의 값을 가짐
감마분포, 로그정규분포: 데이터가 0이상의 값을 가지는 경우
정규분포, 라플라스분포: 데이터가 R 전체에서 값을 가지는 경우

Maximum likelihood estimation 최대가능도 추정법

hat{\theta}MLE = argmax\theta L(\theta;x) = argmax_{\mu,\sigma^2}P(X|\mu,\sigma^2)
가장 가능성이 높은 모수를 추정. 확률이 아님!

log-likelihood로 최적화를 하는데, 이는 연산속도 때문

Bayesian

P(A|B) = P(B|A)P(A)/P(B)

profile
A.I. Developer / Engineer / Researcher

0개의 댓글