sliver__

[NLP] Chapter 1 - 신경망 복습 본문

CS/NLP

[NLP] Chapter 1 - 신경망 복습

sliver__ 2022. 2. 6. 14:21
728x90

[벡터와 행렬]

 

  • 벡터
    • 크기와 방향을 가진 양
    • 숫자가 일렬로 늘어선 집합
  • 행렬
    • 숫자가 2차원 형태로 늘어선 것
    • 가로줄을 행(row), 세로줄을 열(col)
  • 텐서
    • 벡터와 행렬을 확장하여 숫자 집합을 N차원으로 표현한 것
  • 스칼라 값
    • 단일 원소로 이루어진 값

 

[행렬의 원소별 연산]

 

  • +, * 연산자를 실행하면 피연산자인 행렬의 각 원소들을 독립적으로 더하거나 곱한다
import numpy as np

W = np.array([[1,2,3],[4,5,6]])
X = np.array([[0,1,2],[3,4,5]])

print(W+X)
print(W*X)

########## 결과 #############
[[ 1  3  5]
 [ 7  9 11]]
[[ 0  2  6]
 [12 20 30]]
############################

 

[브로드캐스트]

 

  • 형상이 다른 배열끼리도 연산이 가능하다
A = np.array([[1,2],[3,4]])
print(A * 10)

##########결과##########
[[10 20]
 [30 40]]
#######################

 

 

[벡터의 내적과 행렬의 곱]

 

$$ x \cdot y = x_{1}y_{1} + x_{2}y_{2} + ... +  x_{n}y_{n} $$

 

  • 두 개의 벡터 $x = (x_{1}, ... , x_{n}) $ 과 $y = (y_{1},...,y_{n})$ 이 있다고 가정

 

a = np.array([1,2,3])
b = np.array([4,5,6])

print(np.dot(a,b))
print(sep='\n')

A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
print(np.matmul(A,B))

#######결과########
32

[[19 22]
 [43 50]]
###################

[시그모이드 함수]

 

$$ \sigma(x) = {{1} \over {1+exp(-x)}} $$

 

  • 비선형 활성화 함수

 

[손실 함수]

 

  • 학습이 잘 되고 있는지를 알기 위한 척도
  • 학습 데이터와 신경망이 예측한 결과를 비교하여 얼마나 나쁜가 산출한 스칼라 값

 

[소프트맥스 함수]

 

$$ y_{k} = {exp(s_{k}) \over \Sigma_{i=1}^{n} exp(s_{i})} $$

 

  • 출력이 총 n개일 때, k번째의 출력 $y_{k}$를 구하는 계산식
  • 출력을 확률로 해석

 

[교차 엔트로피]

 

$$ L = {\Sigma_{k} t_{k} {\log y_{k}}} $$

 

  • $t_{k}$는 k번째 클래스에 해당하는 정답 레이블
  • log는 e를 밑으로 하는 로그
  • 정답 레이블을 원-핫 벡터([0,0,1])로 표기

$$ L = { -{1 \over N} \Sigma_{n} \Sigma_{k} t_{nk} \log y_{nk}} $$

 

  • N개의 미니배치의 평균 손실 함수

 

[미분과 기울기]

 

  • 벡터의 각 원소에 대한 미분을 정리한 것을 기울기라고 한다

$$ {\sigma L \over \sigma x} = ( {\sigma L \over \sigma x_{1}}, {\sigma L \over \sigma x_{2}}, ... ,{\sigma L \over \sigma x_{n}} )$$

 

  • W에 대한 기울기도 행렬로 정리할 수 있다.

 

[연쇄 법칙]

 

  • 합성함수에 대한 미분의 법칙
  • $y = f(x), z = g(y)$ 두 함수는 $z = g(f(x))$로 표현할 수 있으며 x에 대한 z의 미분은 $ {\sigma z \over \sigma x} = {\sigma z \over \sigma y} {\sigma y \over \sigma x}$ 이다.
  • 여러 함수가 연결되어있더라도 각 함수의 미분을 계산할 수 있으면 전체함수의 미분값을 구할 수 있다.

======================================출처============================================

https://www.coupang.com/vp/products/213557542?itemId=648143817&vendorItemId=72056821737&src=1042503&spec=10304984&addtag=400&ctag=213557542&lptag=10304984I648143817&itime=20220206142141&pageType=PRODUCT&pageValue=213557542&wPcid=16412242423389216252936&wRef=&wTime=20220206142141&redirect=landing&gclid=Cj0KCQiA3fiPBhCCARIsAFQ8QzUzsssLzxN-_B27l9lgCBKwBma5e0E4E5AmLWQWTZy9vZ7VGBKGp1kaAlyZEALw_wcB&campaignid=12654708954&adgroupid=123881097567&isAddedCart= 

 

밑바닥부터 시작하는 딥러닝. 2:파이썬으로 직접 구현하며 배우는 순환 신경망과 자연어 처리

COUPANG

www.coupang.com

 

 

728x90

'CS > NLP' 카테고리의 다른 글

[Hands on Python NLP] - NLP 기본의 이해  (0) 2022.10.09
[NLP] Auto Encoder (1)  (0) 2022.08.11
[NLP] chapter04 - word2vec 속도개선  (0) 2022.02.10
[NLP] Chapter3 - word2vec  (0) 2022.02.10
[NLP] Chapter 2 - 자연어  (0) 2022.02.09
Comments