웰치 방법(Welch)이란? AI에서 구간별 파워를 평균해 신호의 주파수 분포를 추정하는 방법
TL;DR
웰치 방법(Welch)은 신호를 짧은 구간으로 나누고 구간별 파워 스펙트럼을 평균해 파워 스펙트럼 밀도(PSD)를 추정하는 방법입니다. 겹침·창·구간 길이를 정해 들쭉날쭉한 추정의 흔들림을 줄입니다. 시간별 변화를 남기는 STFT와 달리 선택한 구간들을 주파수별 한 곡선으로 요약합니다. 파워와 복소수 계수의 평균, 밀도와 진폭, 매끈함과 정확도를 구분해야 합니다. [1] [3] [5]
핵심 3줄 요약
- 핵심 1
파워를 구한 뒤 평균합니다. 복소수 변환값을 먼저 평균하면 위상이 반대인 성분이 상쇄될 수 있습니다. - 핵심 2
분할은 정밀도와 흔들림을 함께 바꿉니다. 같은 길이의 기록을 짧게 나누면 평균할 구간은 늘지만 가까운 주파수를 구별하기 어려워질 수 있습니다. - 핵심 3
단위와 시간 정보의 손실을 확인합니다. PSD의 세로축은 주파수당 제곱값입니다. 평균 곡선만으로 사건의 발생 시점을 복원하지 않습니다.
이 글에서 다룰 내용
- 웰치 방법의 한 문장 정의
- 열여섯 표본으로 이해하는 구간별 파워 평균
- 분할·평균 제거·창·밀도 정규화의 순서
- 구간 길이·겹침·FFT 길이와 출력 단위
- FFT·STFT·주기도·Baum-Welch와의 차이
- 소리·센서 특징의 사용처와 실전 체크리스트
- 비정상 신호·평균 방식·누설·평가의 주의점
웰치 방법을 한 문장으로 정의하면 무엇인가요?
웰치 방법은 일정한 간격으로 측정한 시계열을 여러 구간으로 나누고, 각 구간에 창을 적용한 주기도를 평균해 주파수별 파워의 밀도를 추정하는 신호 분석 방법입니다. [1]
영어로 Welch’s method라고 부릅니다. 여기서 주기도는 유한한 기록의 주파수 성분을 파워로 표현한 추정값입니다. 파워 스펙트럼 밀도는 Power Spectral Density이며 PSD로 줄입니다. 신경망의 가중치를 학습하는 방법이나 소리의 종류를 바로 판정하는 분류기는 아닙니다. [1] [2]
구간 사이를 겹치게 하는 구성이 흔하지만 겹침이 반드시 있어야만 계산되는 것은 아닙니다. SciPy 문서는 겹침을 0으로 두면 Bartlett 방법과 같다고 설명합니다. 이름이 비슷한 HMM의 Baum-Welch 학습과는 계산 목표가 다릅니다. [1]
한 줄 정리: 웰치는 여러 짧은 구간의 주파수별 파워를 한 곡선으로 모읍니다. FFT는 그 안의 변환 계산에 쓰입니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 초당 8번 기록한
[0,1,0,-1]
을 4번 반복한 열여섯 표본을 살핀다고 가정해 보겠습니다. 2Hz 정현파의 합성 예시입니다. 한 구간을 8표본으로 잡고 4표본씩 옮기면 시작 위치가
[0,4,8]
인 세 구간을 얻습니다.
계산을 단순하게 하려고 모든 가중치가 1인 직사각형 창을 쓰고 평균 제거와 양끝 패딩은 하지 않았습니다. 각 구간을 실수 FFT로 변환한 뒤 절댓값을 제곱하고 샘플링 주파수와 창 제곱합으로 나눕니다. 양의 내부 주파수는 반대편 몫까지 합칩니다. 이 조건은 Hann 기본값과 다릅니다. [1] [3]
주파수 좌표는
[0,1,2,3,4]
Hz이고 세 구간 모두 2Hz 위치의 한쪽 PSD가 0.5입니다. 다른 위치는 0이므로 평균 곡선도 같습니다. 입력을 V 단위로 가정하면 세로축은 V²/Hz입니다. 주파수 간격 1Hz를 곱해 합한 평균제곱은 0.5V²입니다.
위상이 반대인 두 구간을 겹침 없이 따로 계산하는 추가 시험에서는 복소수 계수의 평균이 0이 됐습니다. 그러나 구간별 절댓값 제곱을 평균한 2Hz PSD는 여전히 0.5였습니다. 파형이나 복소수 계수부터 평균하면 서로 다른 질문의 답을 얻습니다.
본문의 배열·파워·단위 예시는 설치된 NumPy FFT와 직접 작성한 직사각형 창의 정규화 계산으로 확인했습니다. SciPy의
signal.welch
를 실행한 결과나 실제 오디오 분류 성능을 측정한 결과는 아닙니다. 실제 호출은 사용 중인 라이브러리 버전과 설정을 맞춰 별도로 대조합니다.
쉬운 예시: 여러 구간에서 같은 주파수의 파워가 얼마나 나타났는지 모읍니다. 파형의 양수와 음수를 그대로 더하는 평균과 혼동하지 않습니다.
왜 AI에서 웰치 방법이 중요한가요?
한 번의 추정에서 생기는 흔들림을 줄입니다
잡음이 섞인 기록의 단일 주기도는 주파수별 값이 크게 출렁일 수 있습니다. 구간별 추정을 평균하는 웰치는 더 매끈한 잡음 바닥을 살피는 방법입니다. SciPy 공식 예시도 단일 주기도와 평균 추정의 차이를 비교합니다. [2] [3]
특징의 계산 조건을 드러냅니다
센서나 소리의 대역별 수치를 AI 입력 후보로 정할 때, 같은 PSD라고 적혀 있어도 창과 구간 길이·단위가 다르면 값을 그대로 비교하기 어렵습니다. 원본에서 어떤 구간을 평균했는지와 어떤 대역을 모았는지 기록하면 입력이 달라진 원인을 찾기 쉽습니다. 이는 이 글의 적용 제안입니다.
추정의 안정성과 편향을 나눠 봅니다
고정된 길이의 자료를 더 많은 짧은 구간으로 나누면 추정 분산과 편향 사이의 절충이 생깁니다. 관련 원 논문은 이 유한 표본 문제를 다룹니다. 곡선이 덜 흔들린다는 이유만으로 원래 분포를 더 정확하게 구했다거나 AI 오경보가 줄었다고 단정하지 않습니다. [5]
핵심 인사이트: 분산이 줄어든 추정 곡선과 업무 정답을 잘 맞히는 특징은 별도로 확인합니다. 시간 정보를 버리는 요약이 목적에 맞는지도 먼저 봅니다.
웰치 방법은 어떤 순서로 작동하나요?
1. 분석 범위와 겹친 구간을 정합니다
시계열의 시간 축·샘플링 주파수·관측 범위를 확인합니다. 구간 길이와 겹치는 표본 수를 정하면 이동 간격은
nperseg - noverlap
입니다. 겹침을 늘리면 같은 측정값이 여러 구간에 들어가므로 구간 수를 독립 실험 횟수로 읽지 않습니다. [1]
2. 평균이나 추세를 제거하고 창을 곱합니다
SciPy 웰치의 기본
detrend="constant"
는 구간별 평균을 뺍니다. 별도 함수인
signal.detrend
의 기본은 선형 추세 제거이므로 둘의 기본값을 혼용하면 안 됩니다.
detrend=False
면 이 제거를 하지 않습니다. [1] [4]
창은 표본마다 가중치를 줘 유한 구간의 누설 양상을 바꿉니다. Hann처럼 양끝이 낮은 창과 직사각형 창은 주된 봉우리의 폭과 주변 누설이 다릅니다. 창을 곱한 뒤에도 세로축을 같은 단위로 읽으려면 해당 창에 맞게 정규화합니다. [3]
3. 구간별 주기도를 계산해 모읍니다
각 구간의 변환을 파워로 바꾸고 정한 척도로 조정한 뒤 주파수 위치별로 평균합니다. 한쪽 PSD는 실수 입력의 음의 주파수 몫을 대응하는 양의 쪽에 더합니다. 직류와 짝수 FFT 길이의 나이퀴스트 위치를 내부 위치처럼 다시 두 배 하지 않습니다. [1] [3]
기본 산술평균은 선택한 구간의 시간 순서를 결과 곡선에 남기지 않습니다. 교육용 시험에서도 진폭이 다른 두 비겹침 구간의 순서만 바꾸자 평균 PSD가 같았습니다. 어느 사건이 먼저였는지 중요하다면 시간별 표현을 함께 보관합니다.
주요 설정과 결과는 어떻게 읽나요?
구간 길이와 FFT 길이는 다른 설정입니다
확인한 SciPy 1.18.0 문서에서
nperseg
는 한 구간의 표본 수입니다. 문자열 창에서 생략하면 256으로 정하며, 창 배열을 직접 주면 그 길이를 사용합니다. 짧은 입력을 다룰 때는 경고와 실제 사용 길이까지 확인합니다. [1]
FFT 길이인
nfft
를 늘려 0을 채우면 출력 칸이 촘촘해집니다. 앞 예시의 구간 길이 8을 유지하고 FFT 길이만 16으로 늘리자 주파수는 9칸, 간격은 0.5Hz가 됐고 밀도를 합산한 평균제곱은 0.5로 유지됐습니다. 새 관측이 생긴 것은 아닙니다. [3]
밀도와 스펙트럼의 단위를 구별합니다
기본
scaling="density"
는 입력이 V, 샘플링 주파수가 Hz이면 V²/Hz입니다.
scaling="spectrum"
는 V²인 제곱 크기 스펙트럼입니다. 두 값의 비율에는 창과 샘플링 주파수가 들어가므로 단순히 같은 배열의 이름만 바꾸는 선택이 아닙니다. [1] [2]
밀도의 대역 파워는 주파수 폭을 반영해 모읍니다. PSD의 봉우리 높이 하나를 곧 진폭이라고 부르지 않습니다. 마이크의 정규화된 디지털 값만 있다면 교정 정보 없이 실제 음압이나 소음 수준으로 바꾸지 않는 것이 이 글의 점검 기준입니다.
평균 방식과 출력 축을 확인합니다
기본
average="mean"
외에
average="median"
을 선택할 수 있습니다. 공식 예시는 일시적인 큰 변화가 평균 PSD를 오염시키는 상황을 비교합니다. 큰 변화가 실제 탐지할 사건이라면 중앙값으로 약해진 성분을 무조건 잡음 제거의 성공으로 보지 않습니다. [1]
함수는 주파수 배열
f
와 추정값
Pxx
를 반환합니다. 기본
axis=-1
은 마지막 축입니다. 실수 입력의 한쪽 출력과 복소수 입력의 양쪽 출력을 구별하고, 여러 채널을 자동으로 섞었다고 가정하지 않습니다. [1]
웰치 방법과 헷갈리는 용어는 무엇이 다른가요?
FFT·단일 주기도와의 차이
고속 푸리에 변환(FFT)는 변환의 계산법입니다. 주기도는 유한한 한 기록의 파워 분포 추정이며 웰치는 여러 짧은 구간의 주기도를 모읍니다. FFT 계수·한 구간의 파워·평균 PSD는 출력의 의미가 다릅니다. [1] [2]
STFT·스펙트럼 중심과의 차이
단시간 푸리에 변환(STFT)는 시간별 복소수 계수를 남깁니다. 웰치는 구간별 파워를 평균해 시간 축을 요약합니다. 스펙트럼 중심이 한 프레임의 주파수 무게중심을 숫자 하나로 줄이는 특징이라면, 웰치 PSD는 주파수별 분포 곡선입니다.
Bartlett·Baum-Welch와의 차이
구간이 겹치지 않는 Bartlett 방식은 웰치와 연결되는 스펙트럼 추정입니다. 반면 HMM의 Baum-Welch는 숨은 상태 모형의 파라미터를 학습합니다. 이름에 Welch가 있다고 같은 입력·출력이나 대체 가능한 알고리즘은 아닙니다. [1]
비교 정리: FFT는 계산, 주기도는 한 기록의 추정, 웰치는 구간별 파워 평균, STFT는 시간별 표현입니다. 학습 알고리즘인 Baum-Welch는 별개입니다.
실전에서는 어디에 쓰이나요?
소리와 센서의 대역별 분포를 비교합니다
같은 장비의 안정된 운전 구간이나 비슷한 녹음 조건에서 주파수별 파워가 어디에 모이는지 비교하는 용도로 검토합니다. 대역별 합산값을 분류기의 후보 특징으로 만들 수도 있습니다. 이번 교육용 시험은 이러한 응용의 가능성을 설명할 뿐 실제 장비 진단이나 음성 분류 개선을 입증하지 않습니다.
잡음 바닥과 전처리 영향을 점검합니다
단일 주기도와 웰치 곡선을 함께 보면 한 번의 분석에서 튄 위치와 여러 구간에 걸쳐 나타난 성분을 구분하는 데 도움이 됩니다. SciPy 예시는 정현파에 잡음을 더해 비교합니다. 필터 전후를 볼 때는 같은 시간 범위·단위·창·척도를 유지하는 것이 이 글의 권장 점검입니다. [2] [3]
웰치 방법을 적용할 때 어떤 순서로 확인하나요?
1. 원본과 계산 계약을 기록합니다
샘플링 주파수·단위·채널·선택 구간을 남깁니다. 창·구간 길이·겹침·FFT 길이·평균 제거·한쪽 출력·척도·평균 방식을 명시합니다. 확인한 문서의 기본 창은 주기적 Hann이고 기본 겹침은 구간 길이의 절반입니다. 생략값만 믿기보다 비교할 설정을 직접 정합니다. [1]
2. 작은 신호에서 단위와 평균을 시험합니다
상수·정현파·평균이 치우친 파형을 넣어 봅니다. 교육용 예시에서 입력 진폭을 두 배 하자 PSD는 네 배가 됐습니다. 같은 파형에 3을 더하면 평균제곱은 9.5였지만 구간 평균을 빼면 0.5였습니다. 평균 제거로 없어진 직류가 업무상 필요한 신호인지도 확인합니다.
3. 겹친 원본의 평가 누수를 막습니다
후속 분류기를 평가한다면 같은 녹음이나 운전 세션에서 나온 겹친 구간을 훈련·평가 양쪽에 섞지 않습니다. 설정을 고르는 검증 자료와 최종 평가 자료를 구별합니다. PSD 곡선의 모양뿐 아니라 실제 오경보·누락·실행 비용을 따로 비교하는 것이 이 글의 적용 순서입니다.
사용할 때 무엇을 주의해야 하나요?
시간 변화가 큰 기록을 한 곡선으로 덮지 않습니다. 시작·정지·충격이 섞인 전체 기록을 평균하면 짧은 사건의 위치와 순서를 잃습니다. 먼저 비교할 구간을 정하고 변화 자체가 중요하면 STFT 같은 시간별 결과를 함께 봅니다. 어떤 평균 범위를 썼는지 보고서에도 남깁니다.
겹침 비율을 정확도의 보장으로 읽지 않습니다. 공식 문서는 기본 Hann에서 50% 겹침을 합리적인 절충으로 설명하며 창과 요구에 따라 달라진다고 명시합니다. 겹침을 키웠다고 독립 표본을 더 수집한 것은 아닙니다. 구간 수만으로 신뢰구간이 자동으로 정해진다고 설명하지 않습니다. [1]
많이 평균하면 모든 편향이 사라진다고 기대하지 않습니다. 고정된 자료에서 분할과 창을 바꾸면 가까운 봉우리가 넓어지거나 합쳐질 수 있습니다. 관련 논문도 분산 감소와 편향 증가의 절충을 다룹니다. 분할 수와 실제 관측 길이, 표시 칸 수를 각각 확인합니다. [3] [5]
평균 제거와 중앙값이 실제 사건을 약하게 만들 수 있습니다. 일정한 오프셋이나 드문 충격이 관심 대상이면 이를 없애는 전처리와 강건한 요약이 목적에 맞는지 검토합니다. 정상 상태를 잘 보여 주는 곡선과 이상 사건을 잘 드러내는 곡선은 평가 기준부터 다를 수 있습니다. [1] [4]
주의: 매끈한 PSD는 모델 정확도나 원인 진단의 증거가 아닙니다. 단위·시간 범위·추정의 절충을 확인하고 실제 의미는 별도 자료로 검증합니다.
자주 묻는 질문
Q1. 웰치 방법은 학습이 필요한 AI 모델인가요?
정한 구간·창·평균 규칙으로 신호의 PSD를 추정하는 계산입니다. 정답 예시로 신경망을 학습하지 않습니다. 계산한 특징을 AI 모델에 연결하는 일은 별도 단계입니다. [1]
Q2. 복소수 FFT 결과를 평균하면 되나요?
그대로 평균하면 위상이 반대인 구간이 상쇄될 수 있습니다. 웰치의 기본 설명은 각 구간의 주기도를 계산한 뒤 평균하는 순서입니다. 교육용 반대 위상 시험에서도 두 순서의 차이를 확인했습니다. [1]
Q3. 밀도값을 모두 더하면 곧 파워인가요?
주파수 폭을 반영해야 합니다. 균일한 주파수 격자에서는 적절한 구간의 PSD 합에 칸 간격을 곱해 근사합니다. 입력 단위와 한쪽·양쪽 표현을 먼저 맞춥니다. [3]
Q4. FFT 길이만 늘리면 가까운 주파수가 분리되나요?
0 채우기는 표시 주파수 격자를 촘촘하게 만듭니다. 실제 구간의 관측 길이를 늘리지 않으므로 창과 구간 길이가 정하는 구별 능력까지 자동으로 좋아지는 것은 아닙니다. [3]
Q5. 겹침을 없애면 웰치가 아닌가요?
SciPy는 겹침이 0인 경우를 Bartlett 방법과 동등하다고 설명합니다. 어느 설정이든 사용한 구간 길이와 창을 남기고 같은 조건으로 결과를 비교합니다. [1]
Q6. Baum-Welch와 같은 방법인가요?
아닙니다. 여기서는 주파수별 파워 분포를 추정합니다. HMM의 Baum-Welch는 숨은 상태 모형을 학습합니다. 이름 일부가 같다는 이유로 설명이나 API를 서로 바꾸어 쓰지 않습니다.
출처
마무리
웰치 방법은 짧은 구간의 주기도를 평균해 신호의 주파수별 파워 밀도를 추정합니다. 변환 뒤 파워를 구하는 순서, 구간 길이와 겹침, 밀도 단위와 평균 제거를 나눠 읽으면 한 곡선에 담긴 정보와 빠진 정보를 구분하기 쉽습니다.
감자나라ai님이 처음 적용한다면 주파수를 아는 작은 합성 신호부터 확인해 보세요. 단위와 시간 범위를 고정하고 단일 주기도·평균 PSD·시간별 표현을 비교합니다. 그다음 실제 자료에서 필요한 사건이 남는지 살피고 후속 AI 성능은 분리한 정답 자료로 평가합니다.
