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

전체 글165

[딥러닝 자연어처리] 9-3. (08) 케라스의 SimpleRNN과 LSTM 이해하기- (11) 문자 단위 RNN 딥러닝을 이용한 자연어처리 입문 #9-3. (08) 케라스의 SimpleRNN과 LSTM 이해하기 -(11) 문자 단위 RNN (08) 케라스의 SimpleRNN과 LSTM 이해하기 1 SimpleRNN 이해하기 rnn - SimpleRNN (3) # rnn = SimpleRNN (3, return_sequences-False, return_state=False) hidden_state= rnn(train_X) print('hidden state: {}, shape: {}'.format(hidden_state, hidden_state.shape)) # 출력값 : hidden state: [[-0.866719 0.95010996 -0.99262357]], shape: (1, 3) 마지막 시점의 은닉 상태 .. 2023. 12. 28.
[KOTRA] 업무 역량 향상을 위한 ChatGPT 및 기타 IT 기술 활용 챗지피티 소개와 업무 혁신 챗지피티는 대화형 인공지능으로, GPT(Generative Pre-trained Transformer)을 기반으로 자연스러운 대화를 이어나가며 정보를 제공한다. 이 기술은 AI의 한 분야로, 업무에서 실제로 활용되며 시간을 절약하고 효율성을 극대화한다. 챗지피티의 역사와 발전 챗지피티는 지난 몇 년 동안 AI 산업에서 큰 관심을 받아왔다. 특히, 2020년에 OpenAI에서 공개한 GPT-3는 많은 주목을 받았는데, 이후 전세계의 기업들이 이러한 생성형 AI 기술을 활용하여 다양한 서비스를 제공하고 있다. 기술 발전과 활용 사례 2017년 구글의 'attention is all you need' 논문을 통해 소개된 트랜스포머 모델이 인공지능 분야를 이끌며, 이후 OpenAI의 .. 2023. 12. 27.
[딥러닝 자연어처리] 9-2. (05) 양방향 순환 신경망 - (07) 게이트 순환 유닛 딥러닝을 이용한 자연어처리 입문 #9-2. (05) 양방향 순환 신경망 -(07) 게이트 순환 유닛 이전과 이후의 시점 모두를 고려해서 현재 시점의 예측을 더욱 정확하게 할 수 있도록 고안된 방법 첫번째 메모리 셀 : 앞 시점의 은닉 상태를 전달받아 현재의 은닉 상태를 계산함 두번째 메모리 셀 : 뒤 시점의 은닉 상태를 전달받아 현재의 은닉 상태를 계산함 [은닉층이 1개 더 추가된 양방향 순환 신경망] from tensorflow.keras.models import Bidirectional timesteps = 10 input_ dim = 5 model = Sequential() model.wooddidirectional(Simgle9300filsden_its, return_sequences=True),.. 2023. 12. 26.
[딥러닝 자연어처리] 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.