본문 바로가기
  • 데이터에 가치를 더하다, 서영석입니다.

전체 글178

[딥러닝 자연어처리] 8-5. (6) 기울기 소실과 폭주 - 07) 케라스 훑어보기 딥러닝을 이용한 자연어처리 입문 #8-5. (6) 기울기 소실과 폭주 - 07) 케라스 훑어보기 6. 기울기 소실(Gradient Vanishing)과 폭주(Exploding) 기울기 소실 : 역전파 과정에서 입력층으로 갈수록 기울기가 점차적으로 작아지는 현상 ⇒ 입력층에 가까운 층들에서 가중치들이 업데이트가 제대로 되지 않음 기울기 폭주 : 기울기가 점차 커져 가중치들이 비정상적으로 큰 값이 되는 현상 1) ReLU와 ReLU의 변형들 시그모이드 함수를 사용할 때 0 또는 1에 수렴하면서 기울기가 0에 가까워짐 → 기울기 소실 ⇒ 은닉층의 활성화 함수로 ReLU 나 Leaky ReLU를 사용 2) 그래디언트 클리핑(Gradient Clipping) 기울기 폭주를 막기 위해 임계값을 넘지 않도록 값을 감.. 2023. 12. 20.
[딥러닝 자연어처리] 8-4. (4.) 역전파 이해하기 - (5) 과적합을 막는 방법들 딥러닝을 이용한 자연어처리 입문 # 8-4. (4.3) 역전파 이해하기 - (5) 과적합을 막는 방법들 4.3 역전파 이해하기 1) 인공 신경망의 이해 예시 인공 신경망 = 입력층, 은닉층, 출력층으로 3개의 층으로 구성 변수 z = 이전층의 모든 입력이 각각 가중치와 곱해지 값이 모두 더해진 가정합. z를 지난 h or o = z가 시그모이드 함수를 지난 후의 값 2) 순전파 3) 역전파 1단계 출력층과 N층 사이의 가중치를 업데이트하는 단계 → 역전파 1단계로 이해가능 4) 역전파 2단계 5) 결과 확인 이후 실제로 순전파를 다시 한 번 진행해 오차가 감소되었는 지를 확인 5. 과적합을 막는 방법들 1) 데이터의 양 늘리기 1차원적으로 데이터 양을 늘릴 수록 데이터는 일반적인 패턴을 학습하기 때문에 .. 2023. 12. 19.
[딥러닝 자연어처리] 8-3. (4) 딥러닝의 학습 방법 딥러닝을 이용한 자연어처리 입문 # 8-3. 4) 딥러닝의 학습 방법 1. 손실 함수 실제값, 예측값의 차이를 수치화해주는 함수. 오차와 손실 함수의 값은 비례 회귀 = MSE, 분류 = 크로스 엔트로피를 주로 이용. 1 ) MSE 연속형 변수를 이용할 때 이용 model.compile(optimizer='adam', loss='mse', metrics=['mse']) #loss에 문자열 mse을 써주면 돼. model.compile(optimizer='adam', loss=tf.keras.losses.MeanSquaredError(), metrics=['mse']) #이런 식으로 표현도 ok. #하지만 딥러닝 자연어 자체가 일반적으로 분류 문제이기 때문에 MSE보단 Cross-entropy를 더 많게 .. 2023. 12. 18.
[딥러닝 자연어처리] 8-2. (3). 행렬곱으로 이해하는 신경망 딥러닝을 이용한 자연어처리 입문 # 8-2. (3). 행렬곱으로 이해하는 신경망 1. 순전파 입력값 → 입력층, 은닉층 지나며 각 층에서의 가중치로 연산돼 출력층으로 향해 → 예측값 추출. 2. 행렬곱으로 순전파 이해하기 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense model = Sequential() # 3개의 입력과 2개의 출력 model.add(Dense(2, input_dim=3, activation='softmax')) model.summary() Model: "sequential" ________________________________________________________.. 2023. 12. 15.
[딥러닝 자연어처리] 8. 1) 퍼셉트론 ~ 2) 2. 인공 신경망 훑어보기 딥러닝을 이용한 자연어처리 입문 # 8. 1) 퍼셉트론 ~ 5) 인공 신경망 훑어보기 1. 퍼셉트론 가중치의 값이 크면 해당 입력값이 중요하다고 의미하고, 각 입력값에 각각의 가중치를 곱해줘서 y로 출력해주는 것 if sum(xiwi) > 임계치 → y = 1, 작은 경우 0으로 출력. 임계치를 좌변으로 넘겨 편향 b로 표현도 가능. b또한 퍼셉트론 입력으로 사용 이런 식으로 값을 넘게 되면 y를 1, 아니면 0으로 이해한다. 출력값을 변경시키는 함수 → 활성화 함수 퍼셉트론은 이를 계단 함수로 用, 이후엔 다양한 활성화 함수 이용됨. 시그모이드 or 소프트맥수 함수 또한 이의 일부분. 퍼셉트론에서 활성화 함수만 시그모이드 함수로 바꿔주면 로지스틱 회귀랑 동일해지는 것을 알 수 있음 단층 퍼셉트론 값을 .. 2023. 12. 14.
[딥러닝 자연어처리] 7. 머신 러닝 개요 7) ~ 9) 딥러닝을 이용한 자연어처리 입문 # 7. 머신 러닝 개요 7) ~ 9) 7) 다중 입력에 대한 실습 크로스 엔트로피 함수를 이용해서 이를 이용해 가중치를 찾고, 가중치는 크로스 엔트로피 함수의 평균을 이용한 방식으로 사용. 크로스 엔트로피 함수는 소프트맥스 회귀의 비용 함수 import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras import optimizers # 중간 고사, 기말 고사, 가산점 점수 X = np.array([[70,85,11], [71,89,18], [50,80,20], [99,20,10], [50,10,10]].. 2023. 12. 13.
[딥러닝 자연어처리] 7. 머신 러닝 개요 4) ~ 6) 딥러닝을 이용한 자연어처리 입문 # 7. 머신 러닝 개요 4) ~ 6) 4) 자동 미분과 선형 회귀 실습 1. 자동 미분 tape_gradient() : 자동 미분 기능 수행 import tensorflow as tf w = tf.Variable(2.) def f(w): y = w**2 z = 2*y + 5 return z #gradients: w에 대해 미분한 값이 저장 with tf.GradientTape() as tape: z = f(w) gradients = tape.gradient(z, [w]) print(gradients) # [] 2. 자동 미분을 이용한 선형 회귀 구현 # 학습될 가중치 변수를 선언 w = tf.Variable(4.0) b = tf.Variable(1.0) #가설을 함수로 .. 2023. 12. 12.
[딥러닝 자연어처리] 7. 머신 러닝 개요 1) ~ 3) 딥러닝을 이용한 자연어처리 입문 # 7. 머신 러닝 개요 1) ~ 3) 1) 머신러닝이란 해결을 위한 접근 방식이 기존의 프로그래밍 방식과는 다름 머신 러닝은 데이터가 주어지면, 기계가 스스로 데이터로부터 규칙성을 찾는 것에 집중함 주어진 데이터로부터 규칙성을 찾는 과정을 훈련(training)또는 학습(learning)이라고 함 2) 머신 러닝 훑어보기 1. 머신 러닝 모델의 평가 학습하기 전에 데이터를 훈련용, 검증용, 테스트용 이렇게 세 가지로 분리함 훈련데이터: 머신 러닝 모델을 학습하는 용도 테스트데이터: 학습한 머신 러닝 모델의 성능을 평가하기 위한 용도 검증용데이터: 모델의 성능을 조정하기 위한 용도 → 모델이 훈련 데이터에 과적합이 되고 있는지 판단하거나 하이퍼파라미터의 조정을 위한 용도 .. 2023. 12. 11.
[딥러닝 자연어처리] 6-1. 토픽 모델링 딥러닝을 이용한 자연어처리 입문 # 6-1. 토픽 모델링 토픽 모델링 : 기계 학습이나 자연어 처리 분야에서 텍스트 본문의 숨겨진 의미 구조를 발견하기 위해 사용되는 텍스트 마이닝 기법 1) 잠재 의미 분석 (Latent Semantic Analysis, LSA) LSA : 토픽 모델링을 위한 최적화 알고리즘 x LDA : LSA의 단점을 보완한 최적화 알고리즘 o DTM or TF-IDF : 단어의 빈도 수를 이용한 수치화 방법 → 단어의 의미 고려하지 못함 ⇒ 대안 = LSA : DTM의 의미를 이끌어내는 방법(잠재 의미 분석) ⇒ 특이값 분해(SVD) 특이값 분해(Singular Value Decomposition, SVD) A = m x n 행렬 → 3개의 행렬의 곱으로 분해 직교행렬 : 자신과 .. 2023. 12. 8.