
PyTorch와 Lightning AI로 LSTM 구축하기 Part 2: LSTM 유닛 구현 시작하기
요약
PyTorch와 Lightning AI를 사용하여 LSTM 유닛을 구현하는 과정을 다룹니다. 장기 기억 유지 비율 결정, 잠재적 기억 계산, 그리고 최종적인 장기 기억 업데이트 단계를 상세히 설명합니다.
핵심 포인트
- 시그모이드 함수를 이용한 장기 기억 유지 비율 결정
- tanh 함수를 활용한 후보 기억값(candidate memory) 계산
- 기존 기억과 새로운 잠재적 기억의 결합을 통한 장기 기억 업데이트
이전 글에서 우리는 클래스를 정의하고 가중치(weights)와 편향(biases)을 초기화함으로써 LSTM 구축을 시작했습니다.
이 글에서는 lstm_unit() 함수를 구현하며 계속 진행하겠습니다.
lstm_unit() 함수는 세 가지 입력을 필요로 합니다:
- 현재 입력값 (current input value)
- 현재 장기 기억값 (current long-term memory value)
- 현재 단기 기억값 (current short-term memory value)
def lstm_unit(self,input_value,long_memory,short_memory):
1단계: 얼마나 많은 장기 기억을 유지할지 결정하기
우리는 __init__() 메서드에서 정의된 파라미터들을 사용하여 기존 장기 기억의 몇 퍼센트를 유지해야 하는지 결정합니다.
이를 위해 long_remember_percent를 생성합니다:
def lstm_unit(self,input_value,long_memory,short_memory):
long_remember_percent = torch.sigmoid(
(short_memory * self.wlr1) +
...
여기서:
- 단기 기억(short-term memory)에 연관된 가중치를 곱합니다.
- 입력값(input value)에 연관된 가중치를 곱합니다.
- 두 결과에 편향(bias)을 더합니다.
- 최종 합계를 시그모이드 (sigmoid) 활성화 함수에 통과시킵니다.
시그모이드 함수는 0과 1 사이의 값을 생성하며, 이는 기억해야 할 장기 기억의 비율을 나타냅니다.
2단계: 잠재적 장기 기억 결정하기
다음으로, 장기 기억에 잠재적으로 추가될 수 있는 새로운 정보의 비율을 계산합니다.
이를 위해 potential_remember_percent를 생성합니다:
potential_remember_percent = torch.sigmoid(
(short_memory * self.wpr1) +
(input_value * self.wpr2) +
...
이는 이전 단계와 유사한 계산을 사용합니다.
2단계: 잠재적 기억 계산하기
우리는 후보 기억값(candidate memory value) 자체도 계산해야 합니다.
이를 위해 탄젠트 하이퍼볼릭 (tanh) 활성화 함수를 사용합니다:
potential_memory = torch.tanh(
(short_memory * self.wp1) +
(input_value * self.wp2) +
...
tanh 함수는 -1과 1 사이의 값을 생성하여, LSTM이 양수와 음수 정보를 모두 저장할 수 있게 합니다.
장기 기억 (Long-Term Memory) 업데이트하기
이제 장기 기억 (Long-Term Memory)을 업데이트할 수 있습니다.
우리는 다음과 같은 방식으로 이를 수행합니다:
- 기억되어야 할 기존 장기 기억의 비율을 유지합니다.
- 저장되어야 할 새로운 잠재적 기억 (Potential Memory)의 비율을 더합니다.
updated_long_memory = (
(long_memory * long_remember_percent) +
(potential_remember_percent * potential_memory)
...
이를 통해 LSTM을 위한 업데이트된 장기 기억 값을 얻게 됩니다.
다음 기사에서는 LSTM의 세 번째 단계로 넘어가, 업데이트된 단기 기억 (Short-Term Memory)을 생성하고 장기 기억의 몇 퍼센트를 출력으로 보낼지 결정하는 과정을 다룰 것입니다.
AI 에이전트는 코드를 빠르게 작성합니다. 하지만 사용자에게 알리지 않고 조용히 로직을 제거하거나, 동작을 변경하고, 버그를 유발하기도 합니다. 이러한 문제는 종종 프로덕션 환경에서 발견되곤 합니다.
git-lrc가 이 문제를 해결합니다. 이 도구는 git commit에 후킹하여 모든 diff가 반영되기 전에 검토합니다. 설정은 60초면 충분하며, 완전히 무료입니다.
모든 피드백과 기여자를 환영합니다! 온라인에서 소스 코드를 확인할 수 있으며, 누구나 사용할 준비가 되어 있습니다.
Github에서 ⭐ star를 눌러주세요
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기