

입력층(Input Layer)
입력층은 신경망에 데이터를 제공하는 첫 번째 층이다. 이 층은 외부로부터 데이터를 받아 신경망의 내부로 전달하는 역할을 한다.
예를들어, X값이 3개면 입력층 노드는 3개이다.
은닉층 (Hidden Layer)
은닉층은 데이터의 패턴이나 특징을 학습하는 층이다. 각 은닉층은 이전 층으로부터의 입력값을 받아 처리하고 다음 층으로 결과를 전달한다. 이 과정에서 각 입력값에 특정 가중치를 곱하여 중요한 특징을 더 잘 인식할 수 있게 한다. 은닉층의 수는 문제의 복잡성, 데이터의 양, 그리고 모델의 성능 요구 사항에 따라 다르게 설정된다.
출력층 (Output Layer)
출력층은 신경망의 마지막 층으로 결과나 예측을 나타낸다. 출력층에서는 가능한 답들의 확률을 계산해, 가장 높은 확률을 가진 답을 최종적으로 선택한다.

✔W(가중치)와 B(편향)는 처음엔 랜덤값!
✔학습(Training)하면서 오차(Error)를 줄이는 방향으로 W와 B를 수정
✔손실 함수(Loss)로 오차를 계산하고, 경사 하강법(Gradient Descent)으로 조금씩 조정
✔반복하면 W와 B가 점점 정답에 가까워져서 좋은 모델이 됨!
💡 PyTorch는 딥러닝 모델을 쉽게 만들고 학습할 수 있도록 도와주는 프레임워크입니다.
✔ 파이썬(Python) 기반으로 사용하기 편함
✔ 동적 연산(Autograd) 지원 → 즉시 실행 가능
✔ GPU 지원으로 빠르게 계산 가능 ⇒ cpu, gpu ⇒ cuda
✔ 연구자와 개발자가 많이 사용 → 최신 모델 적용 용이
먼저, PyTorch를 설치해야 합니다.
👉 공식 사이트에서 환경에 맞는 설치 방법을 확인하세요.

PyTorch의 기본 데이터 구조는 텐서(Tensor) 입니다.
👉 텐서는 행렬(Matrix)과 비슷하지만, 더 높은 차원의 데이터를 표현할 수 있음.
텐서는 숫자를 담을 수 있는 상자
이 상자는 숫자(데이터)를 저장하고 계산할 수 있는 형태
쉽게 말하면, 텐서는 넘파이 배열(Numpy Array)과 비슷하지만, GPU에서도 빠르게 연산할 수 있는 것!
✅ 텐서 생성 예제

PyTorch 텐서는 넘파이(Numpy)와 유사한 연산이 가능함.




한 학생이 수업을 듣고 시험을 본다고 가정하자.
이 학생(LSTM)은 단순히 수업 내용을 받아 적는 것이 아니라, 중요한 것만 기억하고 불필요한 내용은 지운다.




✅ 1️⃣ 필요한 라이브러리 불러오기

✅ 2️⃣ 더미 시계열 데이터 생성

👉 한 번에 학습하는 데이터 샘플 개수
👉 하나의 입력 데이터가 몇 개의 시간 단계(Time Steps)를 포함하는지
📌 예제

✅ 배치 크기 = 32 → 한 번에 32개의 LOT 데이터를 학습
✅ 배치 크기 = 100 → 한 번에 100개의 LOT 데이터를 학습
✅ Sequence Length = 10 → 한 LOT에서 연속된 10개의 시간 데이터를 사용하여 예측
✅ Sequence Length = 20 → 한 LOT에서 연속된 20개의 시간 데이터를 사용하여 예측




criterion = nn.MSELoss() # 손실 함수 (MSE, 회귀 문제)
optimizer = optim.Adam(list(lstm.parameters()) + list(fc.parameters()), lr=0.01) # Adam 옵티마이저
✅ 손실 함수 (criterion) → 모델이 얼마나 틀렸는지 계산
회귀 문제
분류 문제
CrossEntropyLoss (다중 클래스 분류) : 여러 개의 클래스 중 하나를 예측할 때 사용
✅ 옵티마이저 (optimizer) → 모델이 더 정답에 가까워지도록 학습
Adam (Adaptive Moment Estimation)
✅ lstm.parameters() + fc.parameters() → LSTM + FC 레이어의 가중치를 같이 학습!
즉, "손실 함수로 오차를 계산하고, 옵티마이저로 점점 더 정답에 가까워지도록 학습하는 과정!
👉 100번 반복하면서 학습한다는 뜻 (epoch는 전체 데이터셋을 한 번 학습하는 주기)
👉 이전 epoch에서 계산된 기울기(gradient)를 지워줘
👉 안 지우면 이전 값이 남아 있어서 이상한 학습이 될 수도 있어
입력 데이터를 모델에 넣어서 예측값을 계산하는 과정
신경망의 각 층을 거치면서 연산을 순차적으로 수행
순전파에서 계산된 예측값과 실제값을 비교하여, 오차를 줄이기 위해 가중치를 업데이트하는 과정
손실 함수(Loss Function)를 기준으로 기울기(Gradient)를 계산 하고, 가중치를 수정함
