Gekko의 뇌 모듈을 사용하여 딥 러닝 문제를 해결하는 데 사용할 레이어 수와 레이어 유형을 어떻게 결정합니까?


9

딥 러닝 애플리케이션에 Gekko의 뇌 모듈을 사용하는 방법을 배우고 있습니다.

numpy.cos () 함수를 배우고 비슷한 결과를 내기 위해 신경망을 설정했습니다.

훈련 범위가 다음과 같은 경우에 적합합니다.

x = np.linspace(0,2*np.pi,100)

그러나 범위를 확장하려고하면 모델이 분리됩니다.

x = np.linspace(0,3*np.pi,100)

다른 경계에서 작동하도록 모델의 유연성을 높이려면 신경망에서 무엇을 변경해야합니까?

이것은 내 코드입니다.

from gekko import brain
import numpy as np
import matplotlib.pyplot as plt

#Set up neural network 
b = brain.Brain()
b.input_layer(1)
b.layer(linear=2)
b.layer(tanh=2)
b.layer(linear=2)
b.output_layer(1)

#Train neural network
x = np.linspace(0,2*np.pi,100)
y = np.cos(x)
b.learn(x,y)

#Calculate using trained nueral network
xp = np.linspace(-2*np.pi,4*np.pi,100)
yp = b.think(xp)

#Plot results
plt.figure()
plt.plot(x,y,'bo')
plt.plot(xp,yp[0],'r-')
plt.show()

다음은 2pi에 대한 결과입니다.

여기에 이미지 설명을 입력하십시오

다음은 3pi에 대한 결과입니다.

여기에 이미지 설명을 입력하십시오

답변:


6

노드를 5로 늘리면 다음 결과가 나타납니다. b.layer(tanh=5)

아마도이 질문에 대한 답이 여러 개있을 것입니다. 레이어 수를 늘리거나 활성화 기능을 변경하십시오. 다른 솔버도 항상 사용할 수 있습니다. 최상의 네트워크 아키텍처를 찾는 것은 그 자체의 최적화 문제입니다. 어떤 사람들은 유전자 알고리즘으로 알아 내려고 시도했습니다.

https://arxiv.org/pdf/1808.03818.pdf

여기에 이미지 설명을 입력하십시오


2

데이터 중심 (블랙 박스) 모델에는 본질적으로 "과적 합"및 "비 적합"문제가 있습니다. 모델에 너무 많은 자유도를 부여하면 "훈련"데이터 세트에 완벽하게 맞고 "유효성"데이터 세트에는 적합하지 않습니다.

신경망 유형의 모델에 대해서도 동일합니다. 더 많은 레이어를 제공할수록 모델에서 "과적 합"이 더 쉬워집니다.

"과적 합"을 피하는 방법에는 여러 가지가 있습니다.

일반적으로 "훈련 세트"와 "유효 세트"사이의 "모델 오류"의 균형을 맞출 수 있으며, 훈련 오류가 계속 감소하는 동안 유효성 검사 오류가 증가하기 시작하는 시점에서 레이어 증가를 중지하거나 그 반대의 경우도 마찬가지입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.