14,674,000,667 5,436,050 5,403,448 10,385 5,994 4,447
3,806 총 정밀도
기준선에 대해 다음 접근법을 조사했습니다 . 다항식 p ( x )를 샘플링하면 M,δ,ϵ>0 선택하십시오.p(x)=x3+ax2+bx+c 를.
S:={−M,−M+δ,−M+2δ,…,M},
p ( s ⋆ ) < ϵ를 만족 하는 가장 큰 샘플 포인트 s⋆∈S 반드시 존재하며 반드시 p 의 가장 큰 루트의 0.1 내에 있어야합니다 . 우리는 다항식 모음에 대해 M = 11을 취할 수 있음을 보여줄 수 있습니다.p(s⋆)<ϵ0.1pM=11 , δ=0.1 및 ϵ=10−4 .
이 논리를 구현하는 신경망을 설계하기 위해 S 의 다항식을 샘플링하는 뉴런 층으로 시작 합니다. 각 s∈S 에 대해
x1,s=s2⋅a+s⋅b+1⋅c+s3.
다음으로, 우리는보다 이들의 식별 ϵ=10−4 . 그것은 대해 밝혀 s∈S , 그것은 그 보유 p(s)<10−4 인 경우에만 p(s)≤0 . 따라서 relu 활성화를 사용하여 샘플을 정확하게 식별 할 수 있습니다.
relu(10−4−t)−relu(−t)10−4={10if t≤0if t≥10−4.
우리는 이것을 몇 개의 뉴런 층으로 구현합니다 :
x2,sx3,sx4,s=relu(−1⋅x1,s+10−4),=relu(−1⋅x1,s),=104⋅x2,s−104⋅x3,s.
이 시점에서, 우리가 x4,s=1 때 p(s)<10−4 , 그렇지 않으면 x4,s=0 . x 4 , s ⋆ = 1 에서 가장 큰 s⋆ 를 찾습니다 . 이를 위해 우리는 x 4 , M 을 x 5 , M (표기법 편의상)으로 그리고 각 k ≥ 1 로 레이블을 붙입니다.x4,s⋆=1x4,Mx5,Mk≥1, 우리는 반복적으로 정의
x5,M−kδ=1⋅x4,M−kδ+2⋅x5,M−(k−1)δ=∑j=0k2k−jx4,M−jδ.
이 변환 덕분에, 모든 x5,s 음이 아닌 정수이고, s⋆ 고유하다 s 하는 x5,s=1 . 우리는 지금 식별 할 수 s⋆ relu 정품 인증 다른 응용 프로그램 :
relu(t−2)−2⋅relu(t−1)+t={10if t=1if t∈Z≥0∖{1}.
명시 적으로 우리는 뉴런을
x6,sx7,sx8,s=relu(1⋅x5,s−2),=relu(1⋅x5,s−1),=1⋅x6,s−2⋅x7,s+1⋅x5s.
그러면 x8,s=1 경우, s=s⋆ 달리 x8,s=0 . 우리는 이것을 선형으로 결합하여 출력 노드를 생성합니다.
x9=∑s∈Ss⋅x8,s=s⋆.
점수의 경우, 각 레이어에는 (1) 6+3+1+9=19 , (2) 1+4=5 , (3) 1 , (4) 5+5=10 , 서로 다른 정밀도의 뉴런이 있습니다. (5) 1+1=2 , (6) 1+1=2 , (7) 1+1=2 , (8) 1+1+1=3 , (9) 3|S|. 또한 두 층을 제외한 모든 층에는|S|=221 뉴런; 층 5는|S|−1 뉴런과 9 층에는1 뉴런이 있습니다.
편집 : 개선 사항 : (1) 유한 차분을 사용하여 다항식을 훨씬 효율적으로 샘플링 할 수 있습니다. (2) 대신 시그 모이 드 활성화를 사용하여 레이어 2 ~ 4를 우회 할 수 있습니다. (3) relu 활성화를보다 신중하게 적용하여 레이어 5의 오버플로 문제를 피할 수 있습니다 (그리고 후속 레이어를 결합 할 수 있음). (4) 최종 합계는 부품 별 합계로 저렴 합니다.
다음은 MATLAB 코드입니다. 명확하게하기 위해 가중치 또는 바이어스 벡터의 정밀도를 계산 prec하는 함수 ( here )가 있습니다.
function sstar = findsstar2(a,b,c)
relu = @(x) x .* (x>0);
totprec = 0;
% x1 samples the polynomial on -11:0.1:11
x1=[];
for s = -11:0.1:11
if length(x1) < 5
w1 = [s^2 s 1];
b1 = s^3;
x1(end+1,:) = w1 * [a; b; c] + b1;
totprec = totprec + prec(w1) + prec(b1);
else
w1 = [-1 4 -6 4];
x1(end+1,:) = w1 * x1(end-3:end,:);
totprec = totprec + prec(w1);
end
end
% x4 indicates whether the polynomial is nonpositive
w4 = -6e5;
b4 = 60;
x4=[];
for ii=1:length(x1)
x4(end+1) = sigmf(w4 * x1(ii) + b4, [1,0]);
totprec = totprec + prec(w4) + prec(b4);
end
% x6 indicates which entries are less than or equal to sstar
x5 = zeros(size(x1));
x6 = zeros(size(x1));
x5(end) = 0;
x6(end) = 0;
for ii = 1:length(x5)-1
w5 = [-1 -1];
b5 = 1;
x5(end-ii) = relu(w5 * [x4(end-ii); x6(end-ii+1)] + b5);
totprec = totprec + prec(w5) + prec(b5);
w6 = -1;
b6 = 1;
x6(end-ii) = w6 * x5(end-ii) + b6;
totprec = totprec + prec(w6) + prec(b6);
end
% a linear combination produces sstar
w7 = 0.1*ones(1,length(x1));
w7(1) = -11;
sstar = w7 * x6;
%disp(totprec) % uncomment to display score
end
a=0와 같은 실제 뿌리가없고 2 차에 2 개의 복잡한 뿌리가 있습니까?