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

분류 전체보기165

[딥러닝 자연어처리] 9-1. (01) 순환 신경망 (Recurrent Neural Network) 딥러닝을 이용한 자연어처리 입문 #9-1. (01) 순환 신경망 (1) 순환 신경망 (Recurrent Neural Network) 피드포워드 신경망의 한계점: 입력의 길이가 고정되어 있음 이를 해결하기 위한 방법으로 순환 신경망이 사용됨 RNN: 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보냄 셀(cell): RNN 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드 은닉 상태(hidden state): 메모리 셀이 출력층 방향 또는 다음 시점인 자신에게 보내는 값 (2) 케라스(Keras)로 RNN 구현하기 from tensorflow.keras.layers import SimpleRNN model.add(Si.. 2023. 12. 25.
[딥러닝 자연어처리] 8-6. (08) 케라스의 함수형 API - (10)다층 퍼셉트론으로 텍스트 분류하기 딥러닝을 이용한 자연어처리 입문 #8-6. (08) 케라스의 함수형 API(Keras Functional API) - (10)다층 퍼셉트론으로 텍스트 분류하기 08) 케라스의 함수형 API(Keras Functional API) Sequential API는 복잡한 모델을 만드는데 한계가 있음 functional API는 입력의 크기(shape)를 명시한 입력층(Input layer)을 모델의 앞단에 정의 1.전결합 피드 포워드 신경망(Fully-connected FFNN) from tensorflow.keras.layers import Input, Dense from tensorflow.keras.models import Model inputs = Input(shape=(10,)) #10개의 입력을 받는.. 2023. 12. 22.
[딥러닝 자연어처리] 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.