728x90

Math/Numerical Analysis 4

[수치해석] 신경망 모델

신경망 모델의 필요성에 대해 언급하고 그 예시를 들어 같이 설명을 하겠습니다. 이 그래프를 보았을 때, 바로 방정식을 작성할 수 있을까요? 아마 수학을 많이 공부하신 분이라면 3차방정식이라 생각할 것입니다. 물론 이렇게 단순한 그래프라면 사람이 눈으로 보고 찾을 수도 있습니다. 하지만 우리가 사용하는 데이터는 항상 평면에만 있는 것이 아닌, 다차원의 공간 상에 있게 됩니다. 그럴 때는 직접 찾는 것이 아니라 컴퓨터의 힘을 빌려 알아내야 합니다. #특성값과 레이블 features1 = np.array([[xval] for xval in x_train]) features2 = np.array([[xval**2, xval] for xval in x_train]) features3 = np.array([[xva..

[수치해석] Tensorflow 이용 기본 모델 학습

이번에는 python에 있는 Tensorflow를 이용하여 딥러닝의 기본 모델 학습을 해볼 것이다. 텐서플로로 표현한 선형회귀 모델 class MyModel(tf.keras.Model): def __init__(self, **kwargs): super().__init__(**kwargs) self.w = tf.Variable(tf.ones([1,1])) #기울기 self.b = tf.Variable(tf.ones([1])) #y절편 def call(self,x): #x:데이터 x좌표 return tf.matmul(x,self.w) + self.b #모델 선언 및 최적화 방법 결정 #예측 모델 설정 model = MyModel() #수치최적화 알고리즘 설정 MaxEpoch = 25 lr = 0.25 opt..

[수치해석] 수치최적화 알고리즘2 (Adagrad, RMSProp, Adam)

이 전에는 탐색 방향 기반 알고리즘에 대해 언급하였다. 탐색 방향 기반 알고리즘은 앞서 공부했다시피 학습률이 고정되어있으며, 스칼라 학습률에 의한 한계가 있다. 이러한 학습률 고정에 의한 한계를 극복하기 위해 1) 큰 학습률로 시작 2) 최적화 알고리즘을 통해 새로운 파라미터 추정치를 계산하고 이 추정치를 이용하여 손실함숫값을 계산 3) 새로운 추정치에 대한 손실함숫값이 기존의 손실함숫값보다 작다면 파라미터 추정치를 업데이트 4) 새로운 추정치에 대한 손실함숫값이 기존의 손실함숫값다 크면 업데이트를 하지 않고, 학습률의 크기를 절반으로 줄인 후 기존 파라미터 값을 이용하여 다시 계산을 수행 스칼라 학습률에 의한 한계를 극복하기 위해 단순히 미리 정한 상수 학습률을 곱하는 경우 ≫ 탐색 방향에서 각 방향마..

[수치해석] 수치최적화 알고리즘(SGD, Momentum)

1. 스토캐스틱 그래디언트 디센트 (Stochastic Gradient Descent) 방법 ㉮ 초깃값 설정 ㉯ 전체 데이터를 임의로 섞어줍니다. ㉰ 전체 데이터에서 개수가 m개인 부분집합(배치, batch) 들을 만듭니다. ㉱ 각 부분집합마다 다음을 반복합니다. - 부분집합으로 그래디언트를 계산합니다. - 계산한 그래디언트의 반대 방향을 탐색 방향으로 설정합니다. - 주어진 학습률을 그대로 사용합니다. - 파라미터 추정치를 업데이트합니다. ㉲ 만들어진 부분집합 (=batch) 을 모두 사용한 후 다시 ㉱를 Epoch번 반복합니다. #SGD batch_size = 5 Ir = 0.1 #학습률 MaxEpochs = 10 #반복횟수 paths =[] batch_loss =[] #1)초깃값 w0 = np.ar..

728x90
반응형