Dropout은 매우 단순한 Bayesianism의 저렴한 버전으로 생각할 수 있습니다. 이 아이디어는 지난 포스트 말미에 언급한 앙상블과 동일한 비유를 기반으로 합니다. 신경망이 있다고 상상해 보십시오. 이제 당신이 그것을 가지고 실수로 그것에서 몇 개의 뉴런을 떼어 내고 따로 치워 두었다고 상상해보십시오. 이러한 작업을 ~1000번 수행하면 수천 개의 네트워크 앙상블을 얻을 수 있으며 각 네트워크는 무작위 방식으로 서로 약간 다릅니다. 우리는 그들의 예측을 평균화하고 무작위 편차가 장소에서 서로를 상쇄하고 실제 예측을 제공한다는 것을 발견했습니다. 이제 베이지안 네트워크가 있고 불확실성에서 가중치 세트를 수천 번 추출하고 서로 약간 다른 동일한 네트워크 앙상블을 얻는다고 상상해보십시오.
베이지안 접근 방식이 더 멋진 이유는 이 무작위성을 제어된 방식으로 사용할 수 있다는 것입니다.
....
실제로 이것은 dipout 네트워크가 dropout 네트워크보다 비록 많지는 않지만 더 나은 결과를 제공한다는 사실로 해석됩니다.
쿨러 드롭아웃은 물론 매우 간단합니다.
저것들. 드롭아웃이 있는 깊은 NN은 베이지안 네트워크와 유사합니다. 그리고 많은 패키지에 드롭아웃이 있습니다. 먼저 이를 사용하여 예측 변수/타겟에서 물고기를 찾을 수 있습니다. 그런 다음 Bayes로 결과를 개선하십시오. Dropout은 Vladimir Perervenko의 기사에서 사용되었으며, 이를 기반으로 실험할 수 있습니다.
나는 실험했지만 내 예측 변수에 대한 돌파구를 찾지 못했습니다. 그러나 나는 1000개의 뉴런을 떨어뜨릴 만큼 충분히 깊게 네트워크를 만들지 않았습니다. N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다. 저것들. 100개는 제거되었지만 1000개는 제거되지 않았을 수 있습니다. 1000개를 제거하려면 4-10,000개의 뉴런이 있는 네트워크가 필요하며 계산하는 데 오랜 시간이 걸릴 것입니다. 1000그루의 나무가 있는 숲은 NA보다 훨씬 빠르게 계산하면서 비슷한 결과를 얻을 수 있습니다.
저것들. 드롭아웃이 있는 깊은 NN은 베이지안 네트워크와 유사합니다. 그리고 많은 패키지에 드롭아웃이 있습니다. 먼저 이를 사용하여 예측 변수/타겟에서 물고기를 찾을 수 있습니다. 그런 다음 Bayes로 결과를 개선하십시오. Dropout은 Vladimir Perervenko의 기사에서 사용되었으며, 이를 기반으로 실험할 수 있습니다.
나는 실험했지만 내 예측 변수에 대한 돌파구를 찾지 못했습니다. 그러나 나는 1000개의 뉴런을 떨어뜨릴 만큼 충분히 깊게 네트워크를 만들지 않았습니다. N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다. 저것들. 100개는 제거되었지만 1000개는 제거되지 않았을 수 있습니다. 1000개를 제거하려면 4-10,000개의 뉴런이 있는 네트워크가 필요하며 계산하는 데 오랜 시간이 걸릴 것입니다. 1000그루의 나무가 있는 숲은 NA보다 훨씬 빠르게 계산하면서 비슷한 결과를 얻을 수 있습니다.
아, 모르겠습니다. 나무/숲이 몇 개 있으면 Akuras는 성장을 멈추고 아무 것도 개선하지 않고 안정기처럼 누워 있습니다. 떨어뜨리지 말고 죽은 찜질방처럼 떨어뜨리지 마세요
제 생각에는 Bayes와 중도 탈락자를 대략적으로 비교한 것입니다. 하지만 아직 이 주제에 대해 자세히 알지 못하며 논쟁하지 않겠습니다. 아마도 그렇게 될 것입니다.
Alglib-a의 숲에서 이해할 수 없는 코드를 발견했습니다. dataanalysis.mqh의 교차 에트로피 계산 함수의 전체 코드:
//+------------------------------------------------------------------+ //| Average cross-entropy (in bits per element) on the test set | //| INPUT PARAMETERS: | //| DF - decision forest model | //| XY - test set | //| NPoints - test set size | //| RESULT: | //| CrossEntropy/(NPoints*LN(2)). | //| Zero if model solves regression task. | //+------------------------------------------------------------------+ static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy, const int npoints) { //--- create variables double result=0; int i=0; int j=0; int k=0; int tmpi=0; int i_=0; //--- creating arrays double x[]; double y[]; //--- allocation ArrayResizeAL(x,df.m_nvars); ArrayResizeAL(y,df.m_nclasses); //--- initialization result=0; for(i=0;i<=npoints-1;i++) { for(i_=0;i_<=df.m_nvars-1;i_++) x[i_]=xy[i][i_]; //--- function call DFProcess(df,x,y); //--- check if(df.m_nclasses>1) { //--- classification-specific code k=(int)MathRound(xy[i][df.m_nvars]); tmpi=0; for(j=1;j<=df.m_nclasses-1;j++) { //--- check if(y[j]>(double)(y[tmpi])) tmpi=j; } //--- check if(y[k]!=0.0) result=result-MathLog(y[k]); else result=result-MathLog(CMath::m_minrealnumber); } } //--- return result return(result/npoints); }
빨간색으로 강조 표시된 코드 부분은 아래 코드에서 사용되지 않는 항목( tmpi )을 고려합니다. 그렇다면 왜 포함됩니까? 무언가가 완료되지 않았거나 코드가 완전히 정리되지 않았습니다. 일반적으로 나는 1개의 트리를 탐색하고 싶었기 때문에 이 f-ii를 이해하기 시작했습니다. 그리고 포리스트의 나무 수를 1로 설정하면 모든 오류가 0과 1 사이에 있고 이 오류는 100에서 300+까지 발생하는 것을 보았습니다. 누군가가 크로스 엔트로피를 이해합니다. 코드가 일반적으로 정확합니까, 아니면 미완성 상태로 남아 있습니까?
정확하지 않습니다. 여기서 더 명확해야 합니다.
https://habr.com/en/post/276355/
적용 범위가 넓은데 정확히 얼마나 적용될지는 또 다른 문제
저녁에 읽을게
정신 유형에 따르면 당신이 어린이이거나 .. 간단히 말해서 우리는 운전했습니다.
"우리"는 당신 또는 무엇입니까? 주인? 스스로 일자리를 먼저 구하세요, 그 나이에 부모의 목에 앉는 것은 부끄러운 일입니다.
정확하지 않습니다. 여기서 더 명확해야 합니다.
https://habr.com/ru/post/276355/
적용 범위가 넓은데 정확히 얼마나 적용될지는 또 다른 문제
베이지안 접근 방식이 더 멋진 이유는 이 무작위성을 제어된 방식으로 사용할 수 있다는 것입니다.
....
실제로 이것은 dipout 네트워크가 dropout 네트워크보다 비록 많지는 않지만 더 나은 결과를 제공한다는 사실로 해석됩니다.
쿨러 드롭아웃은 물론 매우 간단합니다.
저것들. 드롭아웃이 있는 깊은 NN은 베이지안 네트워크와 유사합니다. 그리고 많은 패키지에 드롭아웃이 있습니다. 먼저 이를 사용하여 예측 변수/타겟에서 물고기를 찾을 수 있습니다. 그런 다음 Bayes로 결과를 개선하십시오. Dropout은 Vladimir Perervenko의 기사에서 사용되었으며, 이를 기반으로 실험할 수 있습니다.
나는 실험했지만 내 예측 변수에 대한 돌파구를 찾지 못했습니다.그러나 나는 1000개의 뉴런을 떨어뜨릴 만큼 충분히 깊게 네트워크를 만들지 않았습니다. N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다. 저것들. 100개는 제거되었지만 1000개는 제거되지 않았을 수 있습니다. 1000개를 제거하려면 4-10,000개의 뉴런이 있는 네트워크가 필요하며 계산하는 데 오랜 시간이 걸릴 것입니다.
1000그루의 나무가 있는 숲은 NA보다 훨씬 빠르게 계산하면서 비슷한 결과를 얻을 수 있습니다.
N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다.
이러한 몬스터는 일반적으로 훈련되지 않습니다. IMHO, NS가 더 쉽습니다. 어딘가에 최대 100개의 뉴런이 있습니다.
기사 2부 요약:
저것들. 드롭아웃이 있는 깊은 NN은 베이지안 네트워크와 유사합니다. 그리고 많은 패키지에 드롭아웃이 있습니다. 먼저 이를 사용하여 예측 변수/타겟에서 물고기를 찾을 수 있습니다. 그런 다음 Bayes로 결과를 개선하십시오. Dropout은 Vladimir Perervenko의 기사에서 사용되었으며, 이를 기반으로 실험할 수 있습니다.
나는 실험했지만 내 예측 변수에 대한 돌파구를 찾지 못했습니다.그러나 나는 1000개의 뉴런을 떨어뜨릴 만큼 충분히 깊게 네트워크를 만들지 않았습니다. N-100-100-100-100-1(401개의 뉴런) 이상을 시도하지 않았습니다. 저것들. 100개는 제거되었지만 1000개는 제거되지 않았을 수 있습니다. 1000개를 제거하려면 4-10,000개의 뉴런이 있는 네트워크가 필요하며 계산하는 데 오랜 시간이 걸릴 것입니다.
1000그루의 나무가 있는 숲은 NA보다 훨씬 빠르게 계산하면서 비슷한 결과를 얻을 수 있습니다.
아, 모르겠습니다. 나무/숲이 몇 개 있으면 Akuras는 성장을 멈추고 아무 것도 개선하지 않고 안정기처럼 누워 있습니다. 떨어뜨리지 말고 죽은 찜질방처럼 떨어뜨리지 마세요
제 생각에는 Bayes와 중도 탈락자를 대략적으로 비교한 것입니다. 하지만 아직 이 주제에 대해 자세히 알지 못하며 논쟁하지 않겠습니다. 아마도 그렇게 될 것입니다.
제 생각에는 Bayes와 중도 탈락자를 대략적으로 비교한 것입니다. 하지만 아직 이 주제에 대해 자세히 알지 못하며 논쟁하지 않겠습니다. 아마도 그렇게 될 것입니다.
기사의 저자는 이것을 비교했습니다 - 내가 아닙니다. 그리고 그는 자신의 실험을 수행한 다른 더 큰 기사로 기사를 썼습니다. 저것들. 이 비교는 분명히 이 방법의 개발자로부터 나온 것입니다.
아, 모르겠습니다. 나무/숲이 몇 개 있으면 Akuras는 성장을 멈추고 아무 것도 개선하지 않고 안정기처럼 누워 있습니다. 떨어뜨리지 말고 죽은 찜질방처럼 떨어뜨리지 마세요
Alglib-a의 숲에서 이해할 수 없는 코드를 발견했습니다. dataanalysis.mqh의 교차 에트로피 계산 함수의 전체 코드:
//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set |
//| INPUT PARAMETERS: |
//| DF - decision forest model |
//| XY - test set |
//| NPoints - test set size |
//| RESULT: |
//| CrossEntropy/(NPoints*LN(2)). |
//| Zero if model solves regression task. |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
const int npoints)
{
//--- create variables
double result=0;
int i=0;
int j=0;
int k=0;
int tmpi=0;
int i_=0;
//--- creating arrays
double x[];
double y[];
//--- allocation
ArrayResizeAL(x,df.m_nvars);
ArrayResizeAL(y,df.m_nclasses);
//--- initialization
result=0;
for(i=0;i<=npoints-1;i++)
{
for(i_=0;i_<=df.m_nvars-1;i_++)
x[i_]=xy[i][i_];
//--- function call
DFProcess(df,x,y);
//--- check
if(df.m_nclasses>1)
{
//--- classification-specific code
k=(int)MathRound(xy[i][df.m_nvars]);
tmpi=0;
for(j=1;j<=df.m_nclasses-1;j++)
{
//--- check
if(y[j]>(double)(y[tmpi]))
tmpi=j;
}
//--- check
if(y[k]!=0.0)
result=result-MathLog(y[k]);
else
result=result-MathLog(CMath::m_minrealnumber);
}
}
//--- return result
return(result/npoints);
}
빨간색으로 강조 표시된 코드 부분은 아래 코드에서 사용되지 않는 항목( tmpi )을 고려합니다. 그렇다면 왜 포함됩니까?
Wikipedia 에 따르면무언가가 완료되지 않았거나 코드가 완전히 정리되지 않았습니다.
일반적으로 나는 1개의 트리를 탐색하고 싶었기 때문에 이 f-ii를 이해하기 시작했습니다. 그리고 포리스트의 나무 수를 1로 설정하면 모든 오류가 0과 1 사이에 있고 이 오류는 100에서 300+까지 발생하는 것을 보았습니다.
누군가가 크로스 엔트로피를 이해합니다. 코드가 일반적으로 정확합니까, 아니면 미완성 상태로 남아 있습니까?
catbust와 비교 - 일반적으로 반환, 일반적으로 테스트에서> 0.5 .. 평소와 같이
내일 계산을 직접 살펴보겠습니다. 디버그 코드가 제거되지 않았습니다.
일반적으로 이 측정항목은 여기서 의미가 없습니다. 조기 중지 또는 기타 용도로 사용되지 않으며 .. 결국에는 정보가 없습니다. 분류 오류가 발생하고 그게 다야