수렴이란?
수렴 의 개념은 잘 정의 된 수학적 용어입니다. 그것은 본질적으로 일련의 요소들이 단일 값에 점점 더 가까워진다는 것을 의미합니다. 이 단일 값을 "제한"이라고합니다.
공식적인 정의는 다음과 같습니다.
X0, X1, X2, ... Xn ...
우리가 생각 Xn converges to a given number L
하는 모든 양의 오류에 대해 (무한한) 실수 시퀀스가 주어지면 , 뒤 따르는 Xm
모든 요소 가 그 오류보다 덜 다른 것과 같은 것이 있습니다.Xn
Xm
L
예:
다음과 같은 시퀀스를 상상해보십시오.
- X0 = 1
- X1 = 0.1
- X2 = 0.01
- X3 = 0.001
- X4 = 0.0001
- ...
- Xn = 1 / (10 ^ n)
Xn은 0으로 수렴합니까? 예! 왜?
오류 E를 생각하십시오 (예 :) E = 0.0025
. 순서대로 모든 요소가 아래에있는 요소가 0.025
있습니까? 예! 그 요소는 X3 = 0.001
입니다. X2 이후에는 모든 XN
것이 아래에 있습니다 0.0025
. 모든 E> 0에 대해이 작업을 수행 할 수 있습니까 ? 예. 우리가 선택한 모든 양의 오류에 대해, 우리는 첫 번째 소수점 앞에 0이 몇 개 있는지를 알 수 있으며 시퀀스는 같은 수의 0을 가진 요소에서 시작하여 더 낮습니다.
이것은 의미합니다 Xn = 1/(10^5) converges to 0
. 우리가 원하는만큼 "0에 가까워 질 수 있습니다"에서와 같이.
알고리즘이 수렴한다는 것은 무엇을 의미합니까?
"기술적으로"수렴하는 것은 알고리즘이 아니라 알고리즘이 조작하거나 반복하는 값입니다. 예를 들어, PI의 모든 숫자를 인쇄하는 알고리즘을 작성한다고 가정 해 봅시다.
알고리즘은 다음과 같은 숫자 인쇄를 시작합니다.
- X0 = 3.14
- X1 = 3.141
- X2 = 3.1415
- X3 = 3.14159
- ...
우리는 스스로 물어볼 수 있습니다 : 알고리즘이 PI에 점점 더 가까이 다가 가는가? 다시 말해, X0, X1, ... XN ...
알고리즘이 인쇄 하는 순서 가 PI로 수렴됩니까?
그렇다면 알고리즘이 PI로 수렴한다고합니다.
우리는 일반적으로 알고리즘의 정확성을 증명하는 데 관심이 있습니다.
일반적으로 알고리즘을 작성할 때 알고리즘이 제공하는 솔루션이 해결하는 문제에 맞는 솔루션인지 알고 싶습니다. 이것은 때때로 수렴의 형태로 올 수 있습니다.
일반적으로 알고리즘에는 메트릭 이라고하는 것이 있습니다. 메트릭은 알고리즘이 생성하는 주어진 결과에 제공하는 숫자입니다. 예를 들어 AI / Machine Learning 반복 알고리즘에서는 입력을 기반으로 알고리즘이 생성하는 "오류"를 추적하는 것이 매우 일반적입니다. 이 오류는 메트릭입니다.
이러한 반복 알고리즘에서 모든 단계는 다른 오류를 생성합니다. 그리고 알고리즘이 시도하는 것은 오류를 최소화하여 점점 작아지는 것입니다. 오류 시퀀스가 수렴되면 알고리즘이 수렴한다고합니다.
이 경우 global optimum
일반적으로 오류가 가장 적은 설정으로 정의됩니다. 이 경우에, "알고리즘은 전역 최적으로 수렴한다"는 "알고리즘은 가능한 가장 낮은 오차로 수렴하는 시퀀스에서 에러를 발생시킨다"는 것을 의미한다.
"전역 최적"이 "정확한 솔루션"인 경우 알고리즘이 수렴된다는 것은 알고리즘이 정확하다는 것을 말하는 것과 같습니다.
또한 알고리즘이 수렴된다는 증거는 (우리가 0.001, 0.0001, ..., 예에서와 같이) 증거가 필요하다는 것을 명심하십시오.
예를 들어 분류기
이에 대한 예는 분류기의 경우 일 수 있습니다. 숫자가 홀수인지 머신 러닝 알고리즘을 사용하는지 분류하고 다음과 같은 데이터 세트가 있다고 가정합니다.
- (1, 홀수)
- (2)
- (홀수)
- (77, 홀수)
- (4도)
모든 숫자 집합에 대한 알고리즘은 짝수이거나 홀수 인 경우 각각에 대해 침을 뱉습니다. 이를 위해 메트릭 오류를 오류 횟수를 제공된 총 요소 수로 나눈 것으로 정의 할 수 있습니다.
따라서 알고리즘이 다음과 같이 침을 뱉으면
- (1, 짝수) // 잘못
- (2)
- (3) 짝수
- (77 짝수) // 잘못
- (4도)
우리의 오류 메트릭은입니다 3/5 = 0.6
. 이제 알고리즘을 다시 실행하면 침을 뱉습니다.
- (1, 짝수) // 잘못
- (2)
- (홀수)
- (77, 홀수)
- (4도)
우리의 오류 메트릭은입니다 1/5 = 0.2
.
점점 더 많이 실행되고 오류 시퀀스는 다음과 같습니다.
0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....
가장 큰 문제는 알고리즘이 0일까요? 그것이 0으로 수렴합니까? 알고리즘이 모두 수렴됩니까? 우리는 결국 그것이 올바르게 (또는 가능한 오른쪽으로) 얻을 수 있다는 것을 증명할 수 있습니까?
잘만되면 :)