지표가없는 작업의 이점

마지막 업데이트: 2022년 1월 20일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
음성 NLP

지표가없는 작업의 이점

AMOS는 구조방정식 모형을 분석하기 위한 통계 소프트웨어다. 구조방정식 모형(분석) 이란 "측정모형과 이론모형을 통해서 모형간 인과관계를 파악하는 방정식 모형"을 의미한다. 즉 각 모형들에 대한 확인적 요인분석을 통해 측정오차가 없는 잠재요인을 발견하고 회귀분석 및 경로분석으로 잠재요인들을 모형 간에 인과적으로 연결하는 방법이라고 할 수 있다. 즉 "구조방정식 모형은 인과분석을 위해서 요인분석과 회귀분석을 개선적으로 결합한 형태"1를 의미한다. 구조방정식 모형은 영어로는 SEM(Structural Equation Modeling) 이라고 한다. 구조방정식 모형은 공분산구조분석(CSM: Covariance Structure Analysis) 이라고도 불리우는데, 즉 "구성개념간의 이론적인 인과관계와 상관성의 측정지표를 통한 경험적 인과관계를 분석할 수 있도록 개발된 통계기법"2을 말한다.

AMOS 란 Analysis of MOment Structures 의 약자로 LISREL(LInear Structural RELations), EQS(EQuationS) 등과 함께 구조방정식모형 분석에 자주 사용되는 통계 소프트웨어이다. AMOS는 Temple 지표가없는 작업의 이점 University의 James L. Arbuckle 교수에 의해 처음 개발되었으며, 현재는 ver. 7.0까지 출시되었다.
구조방정식모델 분석을 위한 프로그램으로 가장 처음 개발되었고 가장 많이 쓰이고 있는 LISREL의 경우, 분석을 위해 사용자가 직접 모형을 프로그래밍해야 한다는 단점이 있는 반면, AMOS는 GUI를 따르고 있어 그래픽 요소들을 배치함으로써 모형을 프로그래밍할 수 있어 분석을 보다 용이하게 할 수 있다는 장점을 가지고 있다. LISREL은 도스용, AMOS는 윈도우용이라고 생각하면 쉽게 이해할 수 있겠다.

1
지금까지 우리는 독립변수 (Independent variable) 과 종속변수 (Dependent variable) 에 익숙합니다. 하지만 구조방정식 모델에선 독립변수와 종속변수라는 개념대신 관측변수(observed variable) 와 잠재변수 (latent variable) 그리고 외생변수 (exogenous variable) 와 내생변수 (endogenous variable)의 개념으로 변수들이 나타내어집니다.

관측변수들이 (설문지에 해당하는 항목들) 모여서 하나의 잠재변수를 형성하게 되고 이러한 잠재변수들끼리 외생변수와 내생변수의 개념을 가지고 모델을 형성하게 됩니다. 외생변수는 모델 내에서 한번도 다른 변수의 결과가 되지 않는 변수이며, 내생변수란 최소 한번은 모델 내에서 결과가 되어지는 모델입니다. 약간은 생소하지만 우리가 사례들을 이해하기 위해선 꼭 알아야 될 사항입니다(참고로 관측변수는 정사각형이나 직사각형이 사용되며 잠재변수는 원으로써 나타내어 집니다).

그럼 우선 간단히 이러한 내용들이 어떻게 사용되는지 알아보도록 하겠습니다. 예를 들어서 외제 자동차에 대한 이미지 (Car image) 조사를 할 경우 다음과 같은 항목들을 만들었습니다.

1) 외제차 BMW에 대한 디자인 (Design)은 어떻다고 생각되십니까?

2) 외제차 BMW에 대한 엔진의 기능 (Engine) 어떻다고 생각되십니까?

3) 외제차 BMW에 대한 가격은 (Price) 어떻다고 생각되십니까?

* 1 번 매우 만족한다, 2번 만족한다, 3번 그저 그렇다 4 불만족스럽다, 5번 매우 불만족스럽다

라고 할 때 여기서 항목 1, 2, 3 이 관측변수가 되고, 이 세 가지 항목으로 구성되는 자동차에 대한 이미지가 바로 잠재 변수가 되는 것입니다. 그래서 아래와 같은 모델로써 만들어지는 것입니다.

아주 쉽죠? 그럼 모델을 하나 더 만들어 볼까요?

두 번째 예는 소비자의 자동차 소비 구매성향 (Purchase intention)에 대해서 만들어 보겠습니다. 우선 자동차 구매성향에 대한 4가지의 항목을 있다고 가정해 보겠습니다 .

1) 나는 차에 외제차에 대해 관심 (Interest) 이 많다

2 ) 나는 새 차로 교체할 시 지표가없는 작업의 이점 멋지고 비싼 차 (Luxury)로 구입 할 것이다.

3) 나는 사회적 지위 (Position) 에 맞는 차를 타야된다고 생각한다.

4) 나는 안전한 차 (Safety)를 타고싶다 .

* 1번 매우 만족한다, 2번 만족한다, 3번 그저 그렇다 4 불만족스럽다, 5번 매우 불만족스럽다

라고 한다면 역시 항목 1,2,3,4 는 관측변수가 되고 소비 구매성향은 잠재변수가 되는 것입니다. 그래서 이것을 모델로 표시하면 다음과 같이 되겠죠?

그렇다면 이 두 모델을 연결시킬 수 있겠죠?

그럼 이 두 모델을 연결하면 다음과 같이 될 것입니다. 그래서 외제차에 대한 이미지가 어떻게 자동차 구매성향에 영향을 미치는가에 대한 모델을 간단하게 만들어 봤습니다.

이 경우 앞에서 독립변수 역할을 하는 차 이미지가 외생변수가 되는 것이고 종속변수의 역할을 하는 소비구매 경향이 내생변수가 되는 것 입니다. (두 번째 모델에서 X1, X2, X3, X4 가 Y1, Y2, Y3, Y4 로 바꿨는데 그것은 두 번째 모델이 종속변수로 되는 관계로 문자만 변한 거지 기본개념은 변한 게 없음을 알려 드립니다)

물론 여기 까지는 회귀분석 (Regression)으로도 가능합니다.

하지만 회귀분석의 경우 항목들에 대한 평균값을 내어 하나의 변수로 만들어주거나 각각의 항목들을 하나씩 연결 시켜야 하는 반면, 구조 방정식 모델의 경우 그럴 필요가 없으며 특히 이러한 잠재변수가 2개 이상일 경우 회귀분석의 경우 각 단계 단계마다 각각의 유의치를 계산해야 되지만 구조방정식 모델의 경우 잠재변수가 2개 이상이라 하더라도 변수간 유의치를 단 한번에 볼 수 있는 장점이 있습니다.

그럼 다음의 사례로 가볼까요?


2
첫 번째 사례에서 언급한 것처럼, 우리는 9개의 관측 변수로 4개의 잠재변수를 만든 후 다시 4개의 잠재변수를 두 개의 독립변수와 두 개의 종속변수를 만들어 그 관계를 보도록 하겠습니다. 약간 복잡해 보이지만 자세히 보면 첫 번째 사례와 동일합니다.

직장에서 직업 만족도를 측정하기 위한 모델개발을 위해 우선 외생변수로는 직장에서 수입에 대한 만족도 (Income Satisfaction) 와 직장내 작업환경 (Work Environment)로 지정하였고, 내생변수로는 직업 만족도 (Job Satisfaction) 와 직장내 협동심 (Cooperation)로 하였습니다.

수입만족도 측정을 위해 두 개의 아이템 (X1, X2) 을 이용하였고, 작업환경을 측정하기 위해 세 개 의 아이템 (X3, X4, X5 )을 이용하였습니다. 직업 만족도 역시 세 개의 아이템 (Y1, Y2, Y3)을 이용하였고, 직장내 협동심을 세 개의 아이템 (Y4, Y5, Y6)을 사용 하였습니다. 이 경우 아래의 그림과 같은 모델을 만들 수 있습니다.

이러한 경우 X1, X2, X3, X4, X5 들은 역시 관측변수들로써 잠재변수 (수입 만족도, 작업환경)를 구성하는 아이템이 되는 것이며, Y1, Y2, 지표가없는 작업의 이점 Y3, Y4, Y5, Y6 역시 잠재변수 (직업 만족도, 직장내 협동심)를 구성하는 관측변수가 되는 것입니다.

자, 그러면 이 모델을 한번 볼까요?

우선 수입에 대한 만족도가 직업 만족도에 대한 영향을 미치고 직장환경 역시 직업 만족도에 영향을 미칩니다.

그리고 직장환경은 다시 직장내 협동심에 영향을 미치며 직업 만족도 역시 직장내 협동심에 영향을 미치는 것으로 나타났습니다.

이럴 경우 회귀분석은 각각의 변수들 간의 유의치를 보지 못합니다. 예를 들어서 수입만족도에서 직업 만족도 까지만 유의치를 볼 수 있고 그다음 직업만족에서 다시 협동심으로 가는 경로의 유의치 밖에 보여주지 못합니다. 하지만 구조방정식모델에서는 그 모든 경로의 유의치 들을 한꺼번에 보여준답니다.

특히 작업환경에서 협동심 (Work environment -> Cooperation)으로 가는 직접적 경로와 작업환경에서 직업 만족도를 통한 협동심 (Work environment -> Job Satisfaction -> Cooperation)으로 가는 간접적 효과 등을 비교할 수 있는 장점 또한 있습니다.

지금까지 전혀 어렵지 않으시죠? 그럼 다음으로 넘어가 볼까요?


3
이번엔 경로분석 (Path analysis) 에 대해서 알아보도록 하겠습니다.

일단 경로 분석은 축자 모델 (recursive model)과 비축자 모델(non-recursive model)로 나뉘질 수 있습니다. 축자 모델은 변수 간에 쌍방향 인과관계 (reciprocal causation) 나 순환적 인과관계 (feedback loops) 가 없는 것이고 비축자 모델은 이러한 것들이 있는 것입니다.

무슨 소린지 잘 모르시겠다구요? 일단 그림을 보세요. 첫 번째 그림은 축자 모델입니다. 모든 화살표 (경로) 들이 오로지 한 방향으로만 움직이고 있습니다 (왼쪽에서 오른쪽으로). 즉 순환적 인과관계나 쌍방향 인과관계가 없는 모델이 바로 축자 모델이라 할 수 있습니다.

그 다음은 비축자 모델입니다. 축자 모델과 다른 점은 화살표들이 서로 주고받는 것이 다른 점입니다. 다시 말해서 순환적 인과관계나 쌍방향 인과관계가 있는 모델이라고 할 수 있습니다. 이런 모델을 우리는 비축자 모델 이라고 합니다.


4
다음은 요인분석에 대한 설명입니다.

요인분석은 크게 두 가지로 분류 될 수 있습니다. 첫째는 탐색적 요인분석 방법으로써 주로 SPSS 등에서 쓰여지는 방법입니다. 그리고 나머지 한 가지는 구조방정식 모델에서 쓰여지는 확인적 요인분석 방법이 되겠습니다.

첫째로 탐색적 요인분석의 경우 수많은 항목들을 비슷한 항목들로 줄이기 위한 방법으로 주로 Varimax 기법을 통한 Eigen value를 기준으로 묶여 집니다. 항목의 숫자를 줄이고 분석의 효율성을 높이기 위해 쓰여지는 방법이라고 말씀드릴 수 있습니다. 하지만 중요한 점은 이 방법은 요인분석을 하기 전에 어떠한 항목들이 서로 묶인다고 단정할 수 없다는 점입니다. 다시 말하면 수리적 분석에 의해 (각 성분들이 1개 이상의 요인들로 묶여지게 됨) 요인들이 결정이 됩니다.

(1) 탐색적 요인분석 (Exploratory factor analysis, 주로 SPSS에서 쓰이는 방법이죠)

이에 반해 확인적 요인분석 방법은 탐색적 요인분석과는 전혀 다른 분석방법이 사용됩니다. 우선 탐색적 분석방법처럼 요인들을 서로 수치적 결과에 따라 묶는 것이 아니라, 이론적 배경에 의해서 잠재변수를 구성하는 관측변수들이 이미 지정되어 있다는 점입니다. 이점이 탐색적 요인분석과 가장 다른 점이라고 할 수 있습니다. 다시 말해서 항목들이 탐색적 요인분석에 상관없이, 이미 잠재변수를 구성하는 관측변수들이 이론적 배경에 의해 정해져 지표가없는 작업의 이점 있고 그 상황 하에서 모델이 만들어지면 분석되는 방법이라고 할 수 있습니다.

(2) 확인적 요인분석 (Confirmatory factor analysis, 주로 SEM에서 쓰이는 방법이죠)

(3) 고차 요인분석 (Higher-order factor analysis)

이 경우는 확인적 요인분석이 두 번째 됐다고(두번 실시되었다고) 보면 이해하기 쉬운 경우입니다.


5
이번에는 Reflective model 과 Formative model에서 알아보도록 하겠습니다.

일단 Reflective model은 Factor view of Multidimensional constructs 로 불리기도 하며, Formative model은 Composite view of Multidimensional Constructs 라고도 불립니다.

일단 두 모델의 모형은 다음과 같습니다.

(1) Reflective model

처음모델은 우리가 지금까지 얘기했던 모델이라고 할 수 있습니다.

(2) Formative model

그런데 두 번째 모델은 뭔가가 좀 다르죠? 맞습니다. 화살표가 첫 번째 모델과 반대로 되어 있음을 알 수 있습니다. 바로 처음 지표가없는 작업의 이점 모델은 우리가 지금까지 사용한 Reflective model 이고, 두 번째 모델이 바로 Formative model 입니다. 그럼 저 모델이 어떻게 다른지 알아볼까요? 언뜻 보기엔 아주 비슷하게 보이지만 큰 차이가 있습니다.

첫 번째 모델의 경우 그림에서 나타난 것처럼 밑에 세 개의 관측변수가 위의 잠재변수를 형성합니다. 예를 들어서 TOEFL 시험점수의 경우 이를 측정하는데 읽기(Reading), 쓰기 (Writing), 듣기 (Listening)로 구성되어 있으므로 TOEEL은 3가지 관측변수의 잠재변수가 되는 것이죠. 이 세 가지 변수들이 TOEFL 점수의 관측변수가 되며 서로 긴밀하게 연관되어 있을 뿐만 아니라 TOEFL은이 세 가지 변수들로써 구성되어 있다는 것을 뜻합니다.

그럼 두 번째 모델을 볼까요? 위에 보인 두 번째 모델은 유명한 Socio-economic status (SES) 모델입니다. 여기선 사람의 사회경제적 지위 (SES) 를 수입수준 (income level, INC), 직업적 명성 (occupational prestige, PRE), 그리고 교육수준 (education, EUD)으로 나누었습니다.

이 모델에서는 보시다시피 밑에 있는 세 개의 요인들이 사람의 사회경제적 지위를 형성하고 있는 모습을 보여줍니다. 다시 말해서 세 가지 요인이 모두 사회적 지위에 영향을 미친다고 보는 겁니다. 위의 것(토플점수 모델)은 위의 잠재변수가 밑에 있는 관측변수에 영향을 미치지만, 두 번째 모델(SES 모델)은 밑의 요인들이 위의 변수에 영향을 미치는 겁니다.

그리고 또 하나 다른 점은 변수들 간의 상관관계입니다. 앞서 말했듯이 읽기, 쓰기, 듣기는 서로 강하게 연관 되어 있지만, 두 번째 경우 수입수준과 직업적 명성 그리고 교육수준은 어느 정도 상관은 있지만 서로 강하게 연관돼 있지 않습니다. 수입이 높다고 그 사람의 교육수준이 높은 것은 아니고 직업이 사회적으로 존경받는 자리라고 하더라도 수입이 많은 건 아닌 것과 비슷한 이치입니다.

또 다른 하나는 에러변수인데 일단 Reflective 의 경우 측정에러 (measurement) 가 있으나 Formative 경우 에러가 존재하지 않습니다. 왜냐하면 변수에 영향을 미치는 변수들이 외생변수이기 때문입니다. 이 두 모델간의 에러변수에 대해선 상당히 복잡한 설명이 필요하므로 여기선 생략하도록 하겠습니다.

사실 학계에서도 이 두 가지 모델에 대해서 여러 가지 연구결과와 학설이 나오고 있지만 (SES 모델도 reflective model로 보시는 분들도 계십니다), 일단 이런 정도로만 아셔도 여러분이 두 모델의 개념을 잡으시는데 충분히 도움이 됐으리라 생각합니다.

6
이번에는 두 그룹 이상의 모델에서 어떻게 구조방정식 모델을 사용하는지 알아보겠습니다.

개인적으로 Multiple group analysis 야말로 구조방정식의 백미라고 말씀드리고 싶습니다. 그 이유는 이 구조방정식 모델 안에 필요한 많은 분석방법들이 사용되기 때문입니다. 주로 남자나 여자 그룹, 어떠한 분류에 따른 높은 집단 혹은 낮은 집단, 그리고 국가별 인종별 등의 그룹으로 나누어서 한 모델 안에 그룹간의 차이가 없는지 있는지, 있다면 어느 점에서 차이가 나는지 등을 알 수 있습니다.

제가 이 분석 방법 전에 반드시 알려드리고 싶은 점은 절대로 그룹 분석 시 두 그룹을 따로따로 돌려서 경로간의 크기를 비교하지 말라는 점입니다 (예로 베타나 감마값 비교). 이건 논리적으로 따지자면 다른 두 수학 시험지를 다른 두 반 학생들에게 보게 한 후 한 반이 다른 반 학생들과 비교해서 시험을 '잘 봤다' 혹은 '못 봤다' 하는 이치입니다. 다시 말해서 논리적으로 말이 전혀 안 되는 경우죠. 우리가 두 집단을 비교하기 위해선 우선 시험지가 같은지 그것을 확인하는 작업이 필요한 겁니다. 이게 그룹분석의 가장 중요한 점입니다. 그리고 많은 논문에서 무시되어져 왔던 부분이기도 하구요.

예를 들어서 아래와 같은 두 집단에서 모델을 비교한다고 가정해 보겠습니다.

우선 우리가 사례분석 2에서 보여준 모델을 기본으로 하죠. 일단 기본모델을 바탕으로 한국과 일본 직장인을 비교를 한다고 가정해 보도록 하겠습니다.

우선 이 분석방법을 이용하기 위해서 위와 같은 두 개의 그룹을 만듭니다. 물론 모델 자체는 같지만 한국 직장인과 일본 직장인에 관한 데이터는 각기 다르므로 같은 모델을 기본으로 두 개의 그룹을 만듭니다.

그 후에 하는 절차가 두 그룹 간 확인적 요인분석 하는 것입니다. 그래서 두 그룹 간 관측변수와 잠재변수 사이의 람다값이 좋고 두 그룹을 제약했을 경우 유의한 차이가 나지 않으면 (카이 스퀘어를 통한 방법을 통해) 다음 단계인 모델 비교로 넘어 가는 것입니다.

이 과정이 다시 말해서 두 시험지가 두 반 학생에게 똑같은 다른지 판별하는 방법이라고 할 수 있겠습니다. 만약 제약 모델과 원래 모델이 다르다면 다음 단계로 넘어간다 하더라도 모델 분석에 의미가 없습니다. 왜냐하면 이미 두 그룹 간 설문지 자체가 동등하지 못하다고 여겨지기 때문입니다.

그 다음은 만약 두 모델에서 확인적 요인분석을 마쳤다면 두 모델 간 경로들 간에 차이가 있는지 없는지를 확인하는 차례입니다. 여기선 물론 여러 가지 방법이 있습니다. EQS 프로그램의 경우 LM test를 통하여 결과를 알 수 있고, Lisrel 이나 AMOS 의 경우 각각의 경로들을 서로 제약해서 결과를 찾아내는 방법이 있습니다.

위에 방법은 사실 머리가 아플 정도로 복잡하기 때문에 일단 여기선 간단한 개념만 설명 드렸습니다. 물론 아주 자세한 방법을 아는 것이 중요하지만, 위에서 간단히 말씀드린 것처럼 그룹 분석의 개념만 일단 알아두셔도 상당한 도움이 되시리라 믿습니다.

7
이 장에선 그룹 간 constraint model (제약 모델) 에 대해 잠깐 설명하고자 합니다.

사례분석 6에 나왔던 상황일 경우 이 경우가 사용됩니다. 기본적인 개념은 두 그룹 간 혹은 한 모델 내에서 경로들을 서로 같다고 정해주는 방법으로 경로 간 크기나 그룹 간 경로들 간의 차이를 보는 방법이라고 말씀드릴 수 있겠습니다.

우선 첫 번째 모델과 두 번째 모델은 그룹 분석의 경우에 수입 만족도 (Income satisfaction) 와 직장 만족도 (Job satisfaction) 로 가는 경로를 한국 직장인 그룹과 일본 직장인 그룹 간에 똑같이 제약을 해준 경우입니다.

이런 제약을 한 후 카이스퀘어 값으로 유의한 차이를 검증합니다. 그리고 마지막 세 번째 모델의 경우 한 모델 안에서 Income satisfaction -> Job satisfaction으로 가는 경로와 Work environment -> Job satisfaction으로 가는 경로들을 제약해 주는 경우입니다.

이와 같은 제약모델을 통해서 우리는 경로 간에 유의한 차이가 있는지 없는지를 알 수 있게 되는 겁니다.

8
마지막으로 SEM의 전반적인 모델을 보여드리겠습니다.

저희 웹사이트에 있는 구조방정식 모델 예제에서 실제 해외 논문에서 발표된 모델들을 찾아보세요. 실제 여러분께서 읽은 내용의 모델들이 나온답니다.

BERT, RoBERTA 및 GPT-3와 같은 텍스트 기반 인공지능(AI) 언어 모델은 최근 몇 년간 큰 발전을 이루었다.

그들은 서면 단어를 입력으로 제공하면 사실상 어떤 주제에도 매우 현실적인 텍스트를 생성할 수 있으며, 몇 가지 라벨이나 예제(BART 및 XLM-R 등)만을 사용하여 정서·감정 분석, 번역, 정보 검색, 추론, 요약 등 다양한 어려운 자연어 처리(NLP) 애플리케이션에 대해 미세 조정할 수 있는 유용한 사전 훈련 모델을 제공한다.

그러나 이러한 응용 프로그램은 주로 AI 모델 학습에 매우 큰 텍스트 데이터 세트가 있는 언어로 제한된다는 과제가 있다.

여기에, 페이스북 AI가 텍스트에 대한 의존에서 벗어나고 이를 해결하는 혁신적인 최초의 고성능 자연어처리 모델인 '생성적 화자 언어 모델(Generative Spoken Language Model. 이하, 이하, GSLM)'을 개발하고 오픈 소스로 공개했다.

GSLM은 표현학습의 최근 혁신을 활용해 레이블이나 텍스트 없이 원시 오디오 신호에서 직접 작동할 수 있는 것이다.

음성 NLP

음성 NLP

즉, 텍스트 데이터 집합이 없는 언어일지라도 잠재적으로 지구상에서 사용되는 모든 언어에 대해 텍스트 없이 NLP 애플리케이션의 새로운 시대를 연 것이다. 또한, GSLM은 구어 표현의 전체 범위를 통합하는 NLP 모델의 개발을 가능하게 한다.

이전에는 NLP 애플리케이션을 음성 입력에 연결한다는 것은 먼저, ASR(Automatic Speech Recognition) 시스템을 훈련해야 한다는 것을 의미했다. 이 시스템은 리소스 집약적인 작업으로 오류를 유발하고 일상적인 언어 상호 작용을 제대로 인코딩하지 못했으며, 단지 소수의 언어만 사용할 수 있었다.

특히, 페이스북 AI는 텍스트 없는 NLP로 ASR을 쓸모없게 만들고, 음성 입력에서부터 음성 출력에 이르기까지 엔드 투 엔드 방식으로 전환한 것이다. 이는 미취학 아동들이 텍스트가 아닌 말로 즉, 오디오 상호작용을 통해서 언어를 학습하는 능력이 이 개발이 가능하게 한 것이다.

현재, 페이북 AI는 기본 GSLM 모델을 공유하고 있으며, 이 모델에는 세 가지 구성 요소가 있다. ▷음성을 구어에서 자주 반복되는 소리를 나타내는 개별 단위로 변환하는 인코더 ▷이전에 본 것을 기반으로 다음, 분리(separation) 단위를 예측하도록 훈련된 자동 회귀 ▷단위 기반 언어 모델 및 단위를 음성으로 변환하는 디코더를 포함한다.

이미지:본지DB

이미지:본지DB

일반적으로 NLP 분야는 학습 모델에 텍스트를 사용해 왔다. 이것은 학습에 적합한 방대한 텍스트 데이터 세트를 가지고 있는 영어와 같은 언어에서는 매우 잘 작동한다. 그러나 세계 언어의 대부분은 이러한 광범위한 데이터 세트가 부족하며, 이는 그들이 NLP 기술의 혜택을 대부분 누릴 수 없었다는 것을 의미한다.

이러한 역학을 뒤집은 것은 신호 처리, 음성 처리, NLP 및 심리언어학에 대한 전문지식을 갖춘 페이스북 AI 연구자로 구성된 다학제 팀에는 매우 흥미로운 도전이었다고 한다. 텍스트 없는 입력에 대한 AI 언어 모델을 훈련시킴으로써 몇 가지 이유로 새로운 지평을 연 것이다.

첫째, 텍스트 없는 NLP 기술은 AI를 더 포괄적이고 현재보다 더 다양한 언어를 모델링할 수 있게 해야 한다. 이 접근법은 모든 구어에 대한 훈련 모델의 가능성을 열어준다.

둘째로, 구두 언어의 완전한 표현성에 접근함으로써, 모델은 뉘앙스와 억양을 통합해야 하고, 아이러니, 분노, 불확실성을 부호화해야 한다. 그리고 웃음, 하품, 그리고 입 모양과 같은 발성을 적용해야 한다. 이는 텍스트 없는 NLP는 구술 언어의 풍부한 표현성 때문에 영어처럼 텍스트가 풍부한 언어에서도 훈련 모델에 텍스트를 사용하는 것보다 실제로 더 효과적으로 작동한다.

셋째, ASR에 대한 주석이나 교육 없이 팟캐스트, 라디오 쇼 및 소셜 오디오 앱과 같은 오디오 우선 경험에 대한 모델을 학습할 수 있어야 한다. 텍스트 없는 NLP는 예를 들어, 다국어 비디오 게임을 위한 온라인 표현 번역 또는 아카이브된 오디오의 콘텐츠 검색 및 요약과 같이 이전에는 상상도 못했던 일련의 응용 프로그램의 가능성을 열어준다.

마지막으로, 이러한 모델들은 발달 심리학자들과 언어 및 언어 임상의들이 유아들이 말하는 것을 배우고 말하는 것을 이해하는 능력이 다른 언어로 이용 가능한 언어 입력의 차이에 의해 어떻게 영향을 받는지 예측하는 데 도움이 될 수 있다.

이미지:페이스북

이미지:지표가없는 작업의 이점 페이스북

이처럼 GSLM은 이러한 광범위한 연구 목표를 진전시키는 데 도움이 되는 것 외에도 오늘날 NLP 분야의 커뮤니티들에게 보다 쉽고 구체적인 혜택을 제공한다. 연구자들은 간단한 음원 예측 과제로 모델을 사전 훈련하고 텍스트가 필요 없이 엔드 투 엔드 작업에 맞게 미세 조정하기만 하면 된다.

이는 최초의 오디오 전용 음성 대 음성 번역 시스템을 가능하게 한 것이다. 페이스북은 추가적으로 더 많은 작업에서 감정 분석, 문서 검색, 요약 등과 같은 표준 NLP 작업의 텍스트 없는 버전으로 발전시킬 것이라고 밝혔다.

먼저, GSLM은 기본 모델을 구축하고 두 가지 간단한 종단 간 작업에서 이를 평가하는 것으로 시작된다.

첫 번째는 분리(separation) 재합성인데, 여기서 입력파는 유사 텍스트라고 부르는 일련의 세퍼레이션 단위로 인코딩된 다음 모델의 '음성'에서 입력을 재합성하는 데 사용된다. 두 번째는 언어 모델이 인코더를 통한 입력 프롬프트에서 무조건 또는 조건부로 새로운 의사 텍스트를 샘플링하는 데 사용되는 음성 생성이다.

모델의 아키텍처. 인코더는 음성 파형을 이산 단위(S2u)로 변환하고 디코더는 반대 매핑(u2S)을 수행하며 단위 기반 언어 모델은 단위 시퀀스의 분포(의사 텍스트)를 모델링한다.(출처: 이하,페이스북 및 논문 캡처)

모델의 아키텍처. 인코더는 음성 파형을 이산 단위(S2u)로 변환하고 디코더는 반대 매핑(u2S)을 수행하며 단위 기반 언어 모델은 단위 시퀀스의 분포(의사 텍스트)를 모델링한다.(출처: 이하,페이스북 및 논문 캡처)

GSLM 모델은 CPC, wav2vec 2.0 및 HuBERT의 세 가지 최첨단 인코더를 테스트한 다음 k-means 클러스터링 및 중복 제거(연속적인 동일한 단위 제거)를 테스트했다. 또한, 언어 모델링을 위해 표준 인과적 트랜스포머(Transformer)를 사용했고 디코더로 구글의 텍스트 음성 변환(TTS) 시스템인 ‘타코트론(Tacotron)2’를 사용했다.

특히, 모델은 6000시간의 ASR의 벤치마크인 Libri-Light 및 오디오북의 대규모 컬렉션(Librispeech)에 대한 인코더 및 단위 기반 언어 모델(uLM)을 훈련하고 대규모 데이터 세트인 다국어 리브리스피치(LibriSpeech) 및 데이터셋 LJ스피치(LJspeech)로 디코더를 학습했다.

전체 스택은 텍스트나 레이블이 없는 원시 오디오의 자체 감독으로 학습되었으며 언어 모델 및 텍스트 음성 변환 구성 요소는 원 오디오에서 파생된 의사 텍스트에 대해 훈련되었다.

이는 다른 모델들과 비교할 때, 생성된 의사 텍스트를 분석할 수 없었다. 왜냐하면 단위들은 문자나 음소(phoneme)와 일대일로 매핑하지 않기 때문이다. 좋은 모델은 일반적으로 100개 이상을 사용하며, 음소보다 짧은 음성 확장을 인코딩한다. 이에 페이스북 연구팀은 생성된 오디오를 다시 텍스트로 변환하기 위해 사전 훈련된 ASR을 사용했다.

이를 통해 ASR에 의해 재전송된 음소와 원래 입력의 음소를 비교한 음소 오류율(PER)을 이용한 재동기화 오디오의 지능성을 측정할 수 있을 뿐만 아니라 곡선(AUC) 아래(그림)의 영역을 사용하여 조건부 또는 무조건적으로 생성된 오디오의 언어 품질과 다양성을 측정할 수 있었다.

두 가지 평가 지표인 AUC와 PER.

두 가지 평가 지표인 AUC와 PER.

AUC는 언어 모델의 창의성의 정도라고 정의하는 다양한 범위의 온도에 걸친 문장들을 샘플링 함으로써 얻어진다. 온도가 낮을수록 모델이 더 강해지고 온도가 높을수록 모형의 변수가 증가한다.

이러한 측정을 수행하면서 연구팀은 몇 가지를 발견했다. 첫째, 양자화(quantizatio)가 얼마나 많은 개별 단위를 사용하는지가 중요하다. 높은 수는 높은 비트 레이트의 비용으로도 음향 수준에서 더 나은 결과를 산출한다.지표가없는 작업의 이점

둘째, 언어적 차원에서도 비슷한 추세에 있지만, 어떤 경우에는 너무 많은 단위를 사용하는 것은 오히려 해가 된다. 셋째, 다른 인코더는 매우 다른 결과를 생성했으며, HuBERT는 최상의 전체 결과를 제공했다.

넷째, 자동 생성 메트릭은 사람과 잘 관련되어 있다. 마지막으로 이러한 메트릭은 빠른 반복을 위한 좋은 프록시 역할을 하는 제로 리소스 음성 벤치마크(Zero Resource Speech Benchmark)의 더 빠른 계산 제로 샷 메트릭에 의해 예측되었다.

3개의 인코더(wav2vec, CPC 및 HuBERT)에 대한 자동 및 인적 메트릭스(낮은 것이 더 좋다)와 비교를 위한 LogMel은 3개의 사전 크기(50, 100 및 200)에서 k-평균을 사용하여 정량화된다. x축은 단위의 결과 비트 전송률입니다.

3개의 인코더(wav2vec, CPC 및 HuBERT)에 대한 자동 및 인적 메트릭스(낮은 것이 더 좋다)와 비교를 위한 LogMel은 3개의 사전 크기(50, 100 및 200)에서 k-평균을 사용하여 정량화된다. x축은 단위의 결과 비트 전송률.

인코더가 발견한 단위는 음소가 아니지만 동일한 속성을 많이 가지고 있다. 그들은 스피커 및 채널 정보를 무시하면서 음성 대조를 인코딩한다('pa'와 'ba'를 구별하는 것과 같이).

또한 음소와 마찬가지로 억양이나 리듬과 같이 표현력이 강한 글로벌 음성 속성을 무시하는 경우가 많다. 이것은 운율로 알려져 있다. 그래서 우리의 두 번째 단계는 인코더와 디코더를 개선하여 운율을 포착하는 것이다.

게다가, 음소와 마찬가지로 그들은 종종 억양과 리듬과 같은 표현력이 있는 더 세계적인 언어 특성을 무시한다. 이것을 운율(prosody)라고 한다. 그래서 연구팀의 두 번째 단계는 인코더와 디코더를 개선하여 운율을 캡처하는 것이다.

이를 위해, 연구팀은 고유한 잠재 표현을 얻기 위해 벡터 양자화를 활용하는 가변 자동 인코더를 훈련시킨다. 이른바 VQ-VAE 시스템은 위에서 설명한 분리형(중복 제거되지 않은) 유사 전화 장치, VQ-VAE의 양자화 된 피치 및 학습된 스피커 임베딩을 입력하는 단순화된 텍스트-음성 시스템과 함께 피치(F0) 정보를 제공한다.

비지도 분리 인코더-디코더 아키텍처에서 의사 텍스트 단위는 왼쪽 상단에, 양화된 피치 단위는 가운데에, 스피커는 하단에 각각 인코딩된다. 오른쪽에서 디코더는 파형을 재구성

비지도 분리 인코더-디코더 아키텍처에서 의사 텍스트 단위는 왼쪽 상단에, 양화된 피치 단위는 가운데에, 스피커는 하단에 각각 인코딩된다. 오른쪽에서 디코더는 파형을 재구성

연구팀은 LJspeech(단일 화자) 및 VCTK(다중 화자)에서 이 아키텍처를 평가했으며 HuBERT 기반 장치가 객관적인 메트릭과 주관적인 평가 점수 모두에서 매우 좋은 결과를 제공한다는 것을 다시 확인했다.

원본 오디오(GT, GT) 및 세 가지 유형의 이산 장치(CPC, HuBERT, VQ-VAE)와 비교하여 두 개의 데이터 세트(LJ: 단일 스피커 및 VCTK: 다중 스피커)에 대해 교육했을 때 시스템의 성능으로 연구팀은 인간 평가자(평균 의견 점수, MOS)와 함께 전 세계적으로뿐만 아니라 자동 기술을 사용하여 콘텐츠, F0 및 스피커의 3차원을 따라 크기를 평가했다.

원본 오디오(GT, GT) 및 세 가지 유형의 이산 장치(CPC, HuBERT, VQ-VAE)와 비교하여 두 개의 데이터 세트(LJ: 단일 스피커 및 VCTK: 다중 스피커)에 대해 교육했을 때 시스템의 성능으로 연구팀은 인간 평가자(평균 의견 점수, MOS)와 함께 전 세계적으로뿐만 아니라 자동 기술을 사용하여 콘텐츠, F0 및 스피커의 3차원을 따라 크기를 평가했다.

또한 음성 및 운율 단위가 높은 수준의 화자 독립성을 달성함에 따라 모델은 원래 입력의 음성 단위와 운율을 유지하면서 출력 스피커 임베딩을 변경하여 음성 전송을 수행할 수 있었다.

음성 코덱으로 사용되어 음성 임베딩과 단위 및 운율에 대한 분리 코드만 전송할 수 있다. 시스템은 훨씬 낮은 비트 전송률을 사용하면서 현재 음성 코덱과 유리하게 비교되었다. 정확히는 압축 품질이 비슷한 표준 코덱인 Opus와 비교하면 20배, 벡터 양자화 변형 자동 인코더를 사용하는 최신 연구 음성 코덱과 비교하면 2배다.

연구팀의 마지막 단계는 표현적 운율을 LM에 통합하고 음성의 내용 측면과 운율 측면을 공동으로 모델링하는 것이다. 입력 및 출력 레이어에 여러 헤드가 있는 멀티스트림 인과적 트랜스포머(causal Transformer)를 도입했다. 여기에서는 유사 전화(pseudo-phone) 단위, 지속 시간 및 양자화된 피치의 세 가지 채널을 사용했다.

멀티스트림 인과적 트랜스포머. 여기서 이산 유사 전화 단위 u는 지속 시간 d와 양자화된 로그 피치(feh)로 보완된다.

멀티스트림 인과적 트랜스포머. 여기서 이산 유사 전화 단위 u는 지속 시간 d와 양자화된 로그 피치(feh)로 보완된다.

연구팀의 기준 모델에서와 같이, 이 운율-GSLM은 오디오북의 원시 파형으로부터 학습된다. 이러한 추가 채널과 작업을 추가하면 유닛의 복잡도 점수 측면에서 LM 성능이 향상된다. 또한, 시스템이 동일한 프롬프트(음성 내용과 샘플을 지속시간과 음색만 부과하는 경우)에 대해 여러 현실적인 운율적 인페인팅(Inpainting)을 생성할 수 있다는 것을 보여줬다.

운율적 ‘인페인팅’ 과제는 연구팀이 의사음성 단위를 고치고, 그에 대한 다른 운율을 생성하도록 하는 것이다(여기서 운율의 처음 3초도 고정되어 있다).

운율적 ‘인페인팅’ 과제는 연구팀이 의사음성 단위를 고치고, 그에 대한 다른 운율을 생성하도록 하는 것이다(여기서 운율의 처음 3초도 고정되어 있다).

이상으로 더 자세한 내용은 아래 첨부된 발표 논문을 참고하면 된다.

한편, 페이스북 AI는 이 연구가 계속됨에 따라, 다음 목표는 텍스트 기반 방법과 ASR이 가장 어려움을 겪고 있는 가볍고 자발적인 음성 및 대화의 데이터 세트에 GSLM을 적용하는 것이다.

또한, 구어 요약이나 구어 정서(감정) 분석, 정보 검색 작업과 같은 라벨링된 데이터가 거의 없는 상황에서 훈련된 다운스트림 작업을 사전 학습하는 데 GSLM이 효과적인 방법이 될 수 있음을 보여주고자 한다고 밝혔다.

특히, 구술 언어가 서면 언어보다 제공하는 표현력과 의미의 미묘함에 있어서 엄청난 이점을 활용하는 것으로 페이스북의 목표는 세계 어느 언어에 대해서도 모델을 학습시키는 것이 가능하도록 하는 것이다. 이를 통해 인간의 사고를 이해하는 데 거의 무한한 잠재적 데이터가 수집되고 활용하는 것이라고 덧붙였다.

한편, 이 음성 기반 자연어처리 기술 및 연구는 지난 2월에 아카이브를 통해 1단계로 '원시 오디오의 생성적 구어 모델링(Generative Spoken Language Modeling from Raw Audio- 다운 )', 2단계로 7월 27일 '이산 분리된 자체 지도 표현에서 음성 재합성(Speech Resynthesis from Discrete Disentangled Self-Supervised Representations- 다운 )', 3단계로 지난 7일(현지시간) '텍스트 없는 운율 인식 생성 구어 모델링(Text-Free Prosody-Aware Generative Spoken Language Modeling- 다운 )'이란 제목으로 발표됐다.

현재, 코드 및 사전 훈련된 모델은 깃허브( 다운 )를 통해 공개돼 누구나 사용할 수 있으며, 이 모델에 대한 업데이트를 공유할 수 있다.

웹 성능 최적화란

웹은 무수히 많은 프로토콜과 많은 실행 환경 속에서 동작이 되고 있기 때문에 웹 성능 최적화 위한 방법들을 단순히 정의하는게 쉽지 않다. 웹 어플리케이션은 복합적인 환경에 따라 비슷한 듯 다른 듯 동작하며 같은 데이터를 이용해도 빠를수도 느릴 수도 있다. 또 사용자가 인지적으로 느끼는 성능 향상은 상당히 주관적이다. 지표 상으로 구체적인 성능 향상을 보여도 사용자는 인지 하지 못할 수도 있다.

성능 최적화는 단순히 각종 비용을 줄이는 측면에서 볼 수 있다. 프로그램은 컴퓨터의 리소스를 소모하면서 동작한다. 소모하는 리소스에는 메모리 사용량, 처리 시간 등이 있다. 처리해야 될 작업이 복잡 하고 클수록 리소스를 더 많이 소모하게 되고 이는 성능 저하로 이어 진다. 웹 프론트앤드 환경에서는 각종 파일들을 주고 받으며 화면을 띄우고 화면을 업데이트하는 과정속에서 비용을 소모한다. 웹 프론트앤드 성능 개선을 위해서 웹 개발자는 최소한의 데이터 로 가장 빠른 시간 에 사용자가 불편함을 느끼지 않는 최적의 화면 을 띄워야 한다. 성능 최적화를 하게 되면 곧 사용자 경험의 개선으로 이어지고 기업의 실적으로도 이어진다. 성능 최적화를 위해 어떤 부분을 신경 써야 하며 어떤 전략들을 쓰고 있는지 알아보도록 하겠다.

성능 개선 지표

고전적으로는 DOMContentLoaded 이벤트 이나 Load 이벤트 의 시점이 빠르다거나 DOMContentLoaded이벤트 와 Load 이벤트 사이의 시간이 짧은 것을 처리시간이 빠르므로 웹 프론트앤드 성능이 좋다고 여겼다.

Dom 이벤트

현대의 웹 브라우저 환경은 앞선 로드 이벤트와 상관 없이 DOM 생성을 최대한 빨리하고 블로킹을 일으키는 복잡한 스크립트 로직은 비동기적으로 처리하고 있다. SPA 라이브러리 같은 경우도 상당히 연산이 심하기 때문에 비동기적으로 스크립트가 실행 된다 ( 참고 : DOMContentLoaded, load, beforeunload, unload 이벤트 ) 최근의 성능 측정에서는 사용자가 직접 느끼는 부분을 중요시 하기 때문에 다음과 같은 사용자 기준으로 성능을 측정한다.

  • FP(First Paint) : 처음 뭔가 그리기 시작
  • FCP(First Contentful Paint) : 텍스트나 이미지 그리기 시작
  • FMP(First Meaningful Paint) : 의미 있는 데이터 그리기 시작
  • TTI(Time to Interactive) : 사용자가 행동을 취할수 있는 시점
  • 같은 혹은 더 빠른 DOMContentLoaded , load 이벤트 시점이라도 사용자는 위에서처럼 점차적으로 보이는 화면을 더 빠르다고 판단한다.

기초 공사 하기

성능 향상을 위해서 일단 첫 단추를 잘 꿰는 것이 중요하다. 웹 환경은 정말 다양하기 때문에 미리 시작 전략을 제대로 세워 두지 않으면 최신 브라우저에서는 최상으로 동작하지만 구 버전 브라우저에서는 동작도 안하는 문제가 발생 할수도 있다. 또, 이미 정해진 환경 ( 예를 들면, 이미 결정 되서 쓰이고 있는 프레임워크나 라이브러리 ) 위에서 할수 있는 성능 개선을 위한 선택들은 환경에 의존적이다. 성능 개선에 문제가 없는 프로젝트 시작을 위해 고려할 것들이 뭐가 있는지 확인해보자.

점진적 향상 기법과 번들 분리 전략

점진적 향상은 가능한 많은 사용자에게 필수 콘텐츠와 기능을 제공하기 위한 설계 철학이다. 또, 기능 실행이 되는 최신 브라우저 사용자에게는 더 나은 최상의 경험을 제공한다. 일단 코어 기능들 부터 만든 후에 구형 브라우저에서도 빠르게 동작은 되도록 한다. 그후 추가 기능은 최신 브라우저 대상으로 개발되며 더 빠르고 더 좋은 사용자 경험을 만들도록 한다.

핵심 기능과 세부 기능이 분리가 잘 되어 있다면 번들도 두 가지로 만들어서 구형 브라우저와 최신 브라우저에게 선별적으로 제공하는 전략도 가능하다. 또, 최신 브라우저에 babel 로 변환 안된 번들을 분별해서 전달하는 것도 성능 향상에 도움이 될 수 있다. babel 은 유용하지만 최신 브라우저의 API 도 구형 코드로 변환 하기 때문에 변환전 코드를 쓰는 최신 브라우저의 동작이 구형으로 변환된 코드에서는 조금 더 느리게 동작 할 수 있다.

프레임워크와 라이브러리 평가

모든 프로젝트에 프레임워크와 SPA 라이브러리가 필요로 되는 건 아니고 한번 선택되면 바꾸기 어렵기 때문에 선택을 신중히 해야한다. 접근성, 안정성, 프로젝트 적합도, 러닝커브, Document, 관련 생태계 등 많은 고려 할 점이 있다.

SPA 라이브러리 같은 경우에는 SSR 이나 Pre-rendering 지원되는지 알아보면 좋다. SEO 나 FCP , TTI 향상을 위해서 다양한 렌더 방법이 고려 될 수 있는데 내가 선택한 라이브러리가 이를 지원 하지 않는다면 애초에 성능 개선을 위한 렌더 방법 선택을 못할 수도 있다. (참고 : Web Rendering)

GraphQL 도입

바닥부터 시작하는 프로젝트라면 한번의 호출로 원하는 데이터를 쏙쏙 빼올 수 있는 GraphQL 도 매력적인 선택이다. GraphQL 은 최소한의 요청으로 최적의 최소 데이터를 가져오기 때문에 성능 개선을 위한 강력한 무기가 될 수 있다. (참고 : GraphQL과 REST의 차이점)

데이터 로드 최적화

웹 화면을 그려내는데 많은 데이터와 리소스들이 필요하다. 우리가 사용 가능한 네트워크는 한정적이고 데이터는 가벼울 수록 좋다. 최소한의 데이터 를 최소한의 호출 로 빠른 속도로 로드 하기 위해 고려할 것들이 무엇이 있을지 알아보자

파일을 지표가없는 작업의 이점 불러오는 도메인은 다르게 하는게 좋다. http2 기준 에서는 상관없지만 http1.1 기준으로 최신브라우저는 도메인당 6개의 접속만 허용 한다. 한번에 가져올 수 있는 제약이 있기 때문에 데이터 로드 시 병목이 생길 가능성이 높다. 별도 도메인을 쓰거나 CDN 을 써서 도메인을 여러개로 만들면 해결 할 수 있다.

네트워크 요청은 되도록 최소화 하는게 좋다. 데이터 크기가 작더라도 http 가 연결되면서 보안 인증 등 때문에 부수적인 네트워크 시간이 소요된다. 한번의 요청으로 필요한 대부분의 데이터를 가져오면 좋다.

Service Worker 를 이용하면 JS 코드나 스태틱 리소스들을 브라우저 내부에 캐싱해서 오프라인 상황에서도 쓸수 있게 한다. 오프라인에 쓸수 있는 장점도 있지만 온라인 상황에서도 주요 코드들이 캐싱 되어 있기 때문에 다시 리소스를 호출하지 않고 그대로 이용하고 성능 개선을 할 수 있다. (참고 : Service worker를 사용해 PWA를 오프라인에서 동작하게 만들기)

로드시 블로킹 방지

script 로드를 위한 script 태그는 DOM 생성 블로킹을 일으킬 수 있기 때문에 HTML 최하단에 배치 되어야 하며 비동기적인 로드를 위해서 async defer 속성 사용도 고려 할 수 있다. ( 참고 : defer, async 스크립트)

로드 사이즈 줄이기

Bundling 대부분 Webpack , Parcel 같은 번들러가 제공하는 기능을 이용해서 파일 사이즈를 줄일수 있다. 번들러를 이용해서 하나의 번들로 만들면 되면 한번의 호출로 여러 지표가없는 작업의 이점 자바스크립트 파일을 사용 할 수 있다. minify 기능을 이용하면 자바스크립트를 공백을 최소한 해서 코드 라인수를 줄이게 되서 파일 크기가 줄어 들게 된다. 트리 쉐이킹 기능을 이용하면 쓰지 않는 코드는 번들에 추가하지 않는다 (참고 : 트리 쉐이킹으로 자바스크립트 페이로드 줄이기). 라이브러리를 사용할 때 트리 쉐이킹 사용의 이점을 극대화 할수 있는데

전자의 경우 모듈 전부를 다 가져오지만 후자의 경우 트리 쉐이킹 기능을 사용하면 필요한 메서드들 만 번들링 되어서 번들 크기를 많이 줄일 수 있게 된다. ( ES6 구문이 제대로 적용 안된 라이브러리 경우는 예외도 있다. 위의 참고글을 확인하자 )

Import On Interaction 패턴 초기 로드하는 JS 파일 크기 를 줄이기 위해서 Import On Interaction 패턴을 사용 할수 있다. (참고 : The Import On Interaction Pattern) 사용자가 특정 동작을 했을 시에 해당 쪼개진 필요한 JS 파일을 LazyLoad 하고 실행한다. 특정 동작 에는 스크롤 이벤트, 라우팅, 클릭 등 다양한 상황이 해당 될 수 있다. ES6에서 제공하는 모듈 기능을 이용해서 Code Splitting 방법을 쓴다. SPA 라이브러리 내부에서 기능적으로 제공하는 경우도 많다. (참고 : 코드 분할 )

CSS

로드시 블로킹 대응

  • 기본적으로 CSS 는 렌더링 차단 리소스 이다.
  • DOM 은 CSSOM 이 있어야 렌더 트리가 구상되기 때문에 CSS 는 항상 html 최상단 head 태그에 배치하도록 한다.
  • 차단이든 비차단이든 일단 다 받아온다 (참고 : 렌더링 차단 CSS)

로드 사이즈 줄이기

JS 파일과 마찬가지로 번들러를 이용해서 상당부분 크기 를 줄일 수 있다.

WebP 사용

JPEG 대신 WebP 사용하면 평균 20 30 프로 정도 크기 감소를 시킬 수 있다. (참고 : 나무위키 WebP) WebP 를 지원 안하는 구버전 브라우저도 있기 때문에 점진적으로 대응하는게 좋다.

webp

이미지 스프라이트

이미지 스프라이트는 여러 개 이미지를 하나로 만들고, CSS의 background-position 속성을 사용해 부분 이미지를 사용하는 방법이다. 아래 이미지와 같은 아이콘들을 8번 호출해서 가져 오는게 아니라 한번 호출해서 잘라서 사용하면 호출 횟수를 줄일 수 있다.

imagesplit

Base64 대체

웹 페이지에서 사용하는 아이콘 이미지 개수가 적은 경우, 다운로드한 이미지를 사용하는 대신 이미지를 Base64로 변환해서 HTML, CSS에 포함해 사용할 수 있다. 이 경우 지표가없는 작업의 이점 브라우저 캐싱이 안되므로 주의하도록 하자.

레이지 로드 이용

Html의 loading 옵션을 이용하거나 Intersection Observer를 활용해서 적시에 이미지를 로드 하도록 해서 초기 데이터 비용을 아낄 수 있다

지표가없는 작업의 이점

교통수요예측을 위해 국가교통데이터베이스(KTDB)를 받으면 사회경제지표 현황 및 예측자료가 들어 있습니다. KTDB는 통행발생 모형을 만들어 통행발생 단계를 작업을 마무리했기 때문에 교통수요예측에서 사회경제지표를 사용할 일은 많지 않습니다. 존 세분화 단계에서 인구와 종사자 수를 이용하는 정도입니다.

그런데 인구 추이를 보면 KTDB와 다른 값을 보입니다. 인구수가 다른 이유를 따져 봤습니다.

인구 비교

보통 보고서 작성에 이용하는 인구는 주민등록 기준 통계청 인구자료입니다. 안정적인 추세를 보이는 자료지만 교통 수요 예측에 이용하기에는 큰 단점이 있습니다. 교통수요는 실 거주자의 이동을 기반으로 예측해야 하는데, 주민등록 인구는 주민등록상의 거주지와 실제 거주기가 다른 경우가 많습니다. 해외에 머무는 사람도 주민등록이 살아 있다면 통계에 포함됩니다. 또한 2010년 이후로 거주 여부를 확인할 수 없는 거주불명자도 주민등록이 그대로 유지되어 통계에 포함됩니다. 그리고, 주민등록 등재 기준이므로 외국인은 제외됩니다.

교통수요는 외국인을 포함하여 실제 거주자의 활동에 의해 결정됩니다. 따라서 인구총조사의 조사 자료를 이용합니다.

구분 주민등록 인구통계 인구총조사
조사방법 주민등록 등재 면접조사(5년 단위)
행정자료 등록센서스(1년 단위)
거주 외국인 제외 포함
거주지 기준 주민등록상 거주지 실제 거주지
거주 불명자 포함 제외

KTDB의 설명자료(2020년 수도권 교통분석 기초자료 -O/D 및 NETWORK 자료 설명서-, 국토교통부, 2021.8)에서 인구는 행정동별 자료이고 집단시설가구의 인구를 뺐다고 나옵니다. 집단시설가구는 기숙사나 노인요양시설, 보육원 등 사회시설에 집단으로 살고 있는 가구를 말합니다. 2021년 배포자료는 2019년 인구 현황을 포함하므로 2019년 인구를 기준으로 비교해봤습니다.

KTDB는 주민등록 인구가 아닌 인구총조사 인구를 이용했습니다. 수도권, 서울특별시, 군포시는 주민등록인구가 더 많고 경기도는 인구총조사 인구가 더 높게 나옵니다. 아마도 경기도에 외국인 거주자와 실거주자가 많아 이렇게 나온 듯 합니다.

그런데 배포판 설명자료에는 집단시설가구 인구를 뺐다고 했는데, 배포자료는 집단시설가구 인구를 포함한 인구수입니다.

집단시설 제외 이유

그렇다면 인구 지표에서 집단시설 가구원은 왜 뼀을까요? 전국 여객 O/D 전수화 및 장래수요 예측(2017년 국가교통조사/DB시스템 운영 및 유지보수, 국토교통부, 2017.12) 보고서에 이에 대한 설명이 있습니다. 여객 통행 O/D는 가구통행실태를 표본조사하여 기본틀을 만들고 인구총조사 자료를 이용하여 전수화합니다. 2016년 가구통행실태조사에서 집단시설가구를 제외하고 조사하였으며, 오차를 줄이기 위해 인구총조사에서 집단시설가구를 제외한 인구를 이용하여 전수화 했습니다.

KTDB 배포판의 인구 자료

KTDB 배포판의 인구는 인구총조사의 집단시설 가구원수를 포함한 전체 인구입니다. 설명자료에 집단시설 가구원수를 제외했다고 설명하고 있으나 집단시설 가구원수 제외 없이 전체 가구원수 자료를 배포하고 있습니다. 배포 자료 설명과 실제 배포 자료를 맞춰 혼선을 방지할 필요가 있습니다.

지표가없는 작업의 이점

잠깐! 현재 Internet Explorer 8이하 버전을 이용중이십니다. 최신 브라우저(Browser) 사용을 권장드립니다!

  • 기사공유하기
  • 프린트
  • 메일보내기
  • 글씨키우기
    • 가나다라마바사
    • 가나다라마바사
    • 가나다라마바사
    • 가나다라마바사
    • 가나다라마바사
    • 가나다라마바사
    • 진혜수 기자
    • 승인 2019.08.01
    • 댓글 0
    • 기사공유하기
    • 프린트
    • 메일보내기
    • 글씨키우기
      • 가나다라마바사
      • 가나다라마바사
      • 가나다라마바사
      • 가나다라마바사
      • 가나다라마바사
      • 가나다라마바사

      우리는 책이나 뉴스를 보는 등 일상생활에서 통계를 자주 접합니다. 여기서 말하는 통계는 무엇을 의미할까요? 오늘은 특정 주제와 관련한 통계조사 결과가 아닌 통계의 학문적 내용을 쉽게 소개하고자 합니다.

      통계는 사전적으로 어떤 현상을 종합적으로 한눈에 알아보기 쉽게 일정한 체계에 따라 숫자로 나타내는 것을 의미합니다. 실례로 우리가 쉽게 뉴스에서 접하는 취업‧실업률, 전년 대비 성장률 등의 수치가 바로 정형화되지 않은 사회 현상을 수치로 표현한 통계라고 지표가없는 작업의 이점 할 수 있습니다.

      그렇다면 학문적 의미의 통계는 무엇을 의미할까요? 크게 2가지로 나눌 수 있습니다. 첫 번째는 기술통계입니다. 특정 현상(표본)의 특성을 파악하는데 주안점을 두는 통계를 뜻하며, 중심경향(평균, 중위수 등), 산포도(분산, 표준편차 등), 분포, 백분위수 등이 있습니다.

      분포의 형태를 파악할 수 있는 지표로는 첨도(kurtosis, 尖度)와 왜도(skewness, 歪度)가 있습니다.

      첨도는 분포가 얼마나 중앙점에 밀집되어있는지 지표가없는 작업의 이점 지표가없는 작업의 이점 보여주는 지표입니다. 0을 기준으로 했을 때, 0보다 크면 정규분포보다 중앙에 더 밀집되어 있음을 의미하고, 작으면 정규분포보다 중앙에 밀집되어 있지 않음을 의미합니다. 또한 왜도는 데이터가 중앙을 기준으로 대칭인지 아닌지를 판별하는 지표입니다. 즉, 왜도의 절댓값이 클수록 비대칭성이 심하고 분포 꼬리가 길어집니다.

      통계량의 각 수치는 표본의 특성을 비교할 수 있는 지표가 될 수 있지만, 한눈에 보기에는 어려울 수 있습니다. 이로 인해 최근에는 해당 데이터나 지식을 시각적으로 표현하는 인포그래픽(Infographics)이 더욱 활성화되고 있습니다.

      이처럼 하나의 현상(표본)에 대한 특성을 이해하는 것은 통계의 기본이며, 통계학문의 큰 부분을 차지합니다. 특히 의사결정 등을 위해 통계를 활용할 때, 우리는 현상 이해에서 나아가 미래를 예측하려고 합니다. 이로 인해 발달한 것이 추론통계(Inference) 분야입니다.

      추론통계는 기존의 데이터를 활용해 미래를 예측하는 것을 의미합니다. 지난 1년간의 주식시세의 변동추이를 지표가없는 작업의 이점 파악해 미래의 시세를 예측하는 지수평활법 시계열분석 방법을 차용한 대표적인 사례입니다.

      데이터를 분석하고 예측하는 기법은 데이터의 형태나 비교 그룹 수 등에 따라 다양합니다. 이에 통계분석에 활용되는 소프트웨어에 대하여 소개하고자 합니다.

      핸드폰으로 동일한 사진을 찍기 위해 여러 애플리케이션을 사용하는 것처럼, 통계를 분석하는 소프트웨어도 다양합니다. 가장 대표적인 것은 SPSS와 SAS입니다. SPSS는 인문‧사회 분야에서 설문지를 기반으로 통계 결과를 도출할 때 자주 사용되는 소프트웨어입니다.

      GUI(graphical user interface) 기반이며, 엑셀처럼 마우스 클릭만으로 통계분석을 쉽게 할 수 있다는 장점이 있습니다. 매우 간단하게 결과를 도출할 수 있어서 통계적 학문 배경이 없는 사람
      도 쉽게 활용할 수 있는 통계 패키지입니다.

      다만 가격이 저렴하지 않으며 문서작업을 위해 도출된 결과를 옮기는 것이 다소 번거롭다는 단점을 가지고 있습니다.

      두 번째로 대중적인 통계패키지는 SAS입니다. SAS는 통계 전공자라면 졸업할 때까지 손에서 놓을 수 없는 소프트웨어라 할 수 있습니다.

      C, JAVA처럼 프로그래밍 언어를 기반으로 데이터 정리, 분석 등의 작업을 수행합니다. SAS의 가장 큰 장점은 간결한 프로그래밍 언어로 관련된 결과를 모두 확인할 수 있다는 점입니다.

      또한 문서작업을 위해 도출 결과를 이동시킬 때도 일반 문서처럼 마우스 드래그로 모양이 흐트러지지 않는다는 점도 장점입니다. 단점으로는 가격이 저렴하지 않고 프로그래밍 언어를 일정 부분 학습해야 활용 가능하다는 점 등이 있습니다.

      앞서 기술통계 부문에서 데이터를 시각화하여 표현하는 인포그래픽 분야가 주목받고 있다고 소개했는데, 이러한 시각적 부분 때문에 급부상하는 통계 패키지가 있습니다.
      바로 R패키지입니다.

      R의 가장 큰 장점은 무료라는 점입니다. 또한 SAS 등은 관련 분석툴을 프로그램에 모두 내장하고 있어 무겁지만, R은 프로그램 자체가 크지 않아 노트북에서도 쉽게 사용할 수 있습니다. 분석툴이 필요할 때마다 다운로드할 수도 있으며 오픈소스로 하루에도 수백 건의 분석프로그램이 업로드됩니다. 이로 인해 결과를 다양한 그래프로 표현할 수 있다는 점이 강점입니다. 다만 오픈소스인 만큼 검증되지 않은 분석 방법도 산재하여 있기 때문에 각 분석툴을 사용하기 전 해당 내용에 대한 이론적 검토가 필요합니다. 이러한 불안정성에도 불구하고 빅데이터 소프트웨어인 파이썬과 쉽게 연동될 수 있다는 점 때문에 많은 사용자가 찾고 있습니다.

      그 밖에 통계프로그램으로는 STATA가 있습니다. 이는 메타분석에 최적화되어 있는 프로그램입니다. 메타분석은 동일한 주제를 다룬 기존 참고문헌이나 논문의 결과들을 비교하여 결론을 확고히 하는 분석 방법을 말합니다. 메타분석의 결과가 동질성이 있을 때 그 주제에 대한 결론을 견고히 하는 효과가 있습니다.

      이처럼 동일한 통계분석에도 분석 방방법, 편의성, 필요한 결과의 형태 등에 따라 사용하는 통계 패키지가 다양하게 존재합니다. 우리가 자주 사용하는 엑셀에서도 간단한 통계 분석을 수행할 수 있으니, 간단한 통계라면 엑셀을 활용하는 것도 좋은 방법입니다.


0 개 댓글

답장을 남겨주세요