[선형대수학] 양의 정부호 행렬(positive definite matrix)이란?

컴퓨터비전/선형대수학|2017. 11. 22. 17:47

오늘은 대칭 행렬 중에서 특수한 케이스인 양의 정부호 행렬(positive definite matrix)에 대해서 정리하려고 한다. 



나중에 자세히 다루겠지만 양의 정부호 행렬은 아주 유용하게 쓰이는 행렬이다. 대칭 행렬은 실수인 고유값들을 갖는다고 이전 포스팅(http://bskyvision.com/179)에서 설명했었다. 양의 정부호 행렬도 마찬가지로 실수인 고유값들을 갖는데 더 나아가서 그 고유값들이 모두 양수인 친구다



▶ 양의 정부호(positive definite)의 의미


우선 먼저 변수가 하나인 이차함수에 대해서 생각해보자. 왜 갑자기 생뚱맞게 이차함수에 대해서 살펴보는지 이해가 되지 않을 것이다. 그러나 이차함수의 극점을 찾는 것이 양의 정부호 행렬과 밀접한 관계가 있다는 사실만 알고 쭉 읽어가자. 일단 아래와 같은 이차함수가 있을 때, 언제 극점을 갖고 그 극점의 값은 무엇일까?



고등학교때 배운 것을 기억해서 풀면, 



x가 -2일 때 극값 4를 갖는다는 것을 알 수 있다. 이 극값 4는 극소값이면서 또 이 함수의 최소값이다. 미분을 이용해도 언제 극점을 갖는지를 알 수 있다. 우선 x에 대해 한번 미분하면, 


 


x가 -2일 때 극점을 갖는다는 것을 알 수 있다. x=-2를 에 대입하면 y=4가 나오므로 점(-2,4)가 극점이고 4가 극값이다. 이 극점이 극소점인지 극대점인지 결정하기 위해서 x에 대해서 두번 미분하면,



두번 미분한 결과 양수가 나왔으므로 점(-2, 4)는 극소점임을 알 수 있다. 그러니까 일차미분을 통해서 어디에서 극점이 존재하는지를 알 수 있고, 이차미분을 통해서는 그 점이 극소점인지 극대점인지 판단할 수 있다. 


그러면 이번에는 변수가 두 개인 이차 함수(이변수함수)를 생각해보자. 



이와 같은 이변수함수는 극소점 또는 극대점을 가질 수도 있고, 아니면 안장점(saddle point)를 가질 수도 있다. 안장점은 어떻게 보면 극대점인데, 어떻게 보면 극소점인 약간 신비로운 점이다. (안장점은 밑에서 자세히 설명할테니 일단 넘어가자.) 마찬가지로 극소점 또는 극대점 또는 안장점이 어디에서 존재하는지 알려면 일차미분이 0이 되는 점을 찾아야 한다. 변수가 두 개이므로 x, y 각각에 대해서 편미분을 해줘야 한다. 



위 두 식을 0으로 만드려면 x와 y가 모두 0이어야 한다.  즉, 점(0, 0)에서 극소점 또는 극대점 또는 안장점을 갖는다. 이 점을 정류점(stationary point) 또는 임계점(critical point)이라고 부른다. 즉, 정류점은 극소점, 극대점, 안장점 모두를 포함하는 개념이다. 점(0, 0)을 f(x, y)에 대입하면 0이 나오므로, 0이 극소값 또는 극대값 또는 안장값이다. 그러면 이처럼 변수가 두개인 함수의 정류점이 극소점인지 극대점인지 안장점인지 결정하기 위해서는 어떻게 해야할까? 변수가 하나일 때와 다르게 단순히 이차미분하는 것으로는 결정할 수 없다. 위에서처럼 고등학교때 사용했던 극대점, 극소점 구하던 방식을 이용해보자. 



두 항 모두 제곱의 형태이므로 0보다 크거나 같다. f(x, y)는 점(0, 0)을 제외하고는 모두 다 0보다 큰 값을 갖는다. 이것을 두고 바로 양의 정부호(positive definite)라고 칭한다. 함수값들이 정류점을 제외하고는 양수로 한정되어 있기 때문이다. 따라서 점(0, 0)은 f(x, y)에서 극소점이면서 최소점이다. 양의 정부호인 경우에는 극소점을 갖는다는 것을 기억하자. (참고로 음의 정부호(negative definite)인 경우에는 극대점, 안장인 경우에는 안장점을 갖는다.) 그래프를 보면 이해가 쉬워진다(그림1).


그림1. 함수 f(x, y) = 2x^2 + 4xy + 4y^2의 그래프, 양의 정부호이므로 그래프가 그릇 형태이다. 점(0,0)이 극소점이다.


그림1과 같이 양의 정부호인 경우에는 그래프가 그릇과 같은 형태가 된다. 점(0, 0)에서 최소값을 갖고 나머지는 모두 다 0보다 크다. 



▶ 이변수함수가 양의 정부호(positive definite), 음의 정부호(negative definite), 안장(saddle) 중에 무엇인지 판단하는 방법


그러면 좀 더 문제를 일반화시켜서 변수가 두 개인 함수(이변수함수)를 아래와 같이 적겠다. 



이 함수도 역시 제곱항들로만 구성되게 만들어보자.



그러면 어떤 경우에 함수 f(x, y)가 양의 정부호일까? 우선 a > 0이어야 한다. 그러면 첫번째 항은 점(0, 0)을 제외하고 무조건 0보다 커진다. 또한 두번째 항의 계수도 0보다 커야 한다. 즉 이어야 한다. 이것을 정리하면, 



가 된다. 이 두가지만 만족시키면 함수 f(x, y)는 양의 정부호다. 


<양의 정부호가 되는 조건>

이면, 은 양의 정부호다. 


이번에는 음의 정부호(negative definite)에 대해 알아보자. 음의 정부호는 양의 정부호를 이해했다면 매우 쉽다. 점(0, 0)을 제외하고 모든 점이 음수로 한정되는 함수다. 따라서 점(0, 0)에서 극대값을 가진다. f(x, y)가 음의 정부호가 되려면, 양의 정부호일 때와 반대로 a < 0이 되어야 하고, 이어야 한다. 를 정리하면,



이 된다. 


<음의 정부호가 되는 조건>

이면, 은 음의 정부호다. 


위에서 양의 정부호였던 에 -1을 곱하면 음의 정부호인 함수가 된다. 그래프를 통해 음의 정부호인 경우 어떤 형태인지 살펴보자(그림2).


그림2. 함수 -2x^2 - 4xy - 4y^2의 그래프, 음의 정부호이므로 그래프가 뒤집어진 그릇 형태이다. 점(0,0)은 극대점이다.


음의 정부호는 그림2와 같이 그릇이 뒤집어진 형태의 그래프를 갖는다. 또한 점(0, 0)이 극대점이고, 그 외의 모든 점은 음수값을 갖는다. 


드디어 안장(saddle)에 대해서 알아볼 시간이다. 양의 정부호든 음의 정부호든 에서 이었다. 만약 이라면 어떻게 될까? 이때가 바로 안장점을 갖는 경우다. 아래와 같이 함수를 생각해보자. 



이는 에서 a = 1, b = 0, c = -1인 경우다. 따라서 인 상황이다. 한번 그래프를 그려보겠다(그림3).

 

그림3. 함수 x^2 - y^2의 그래프, 그래프가 말 안장같이 생겨서 안장(saddle)이라고 불린다. 점(0,0)은 안장점이다.


그래프를 보니 말 안장같이 생겼다. 이 그래프 모양때문에 이러한 특성의 함수에 안장이라는 이름이 붙여진 것이다. 점(0, 0)에서 안장점을 갖는데, 흥미로운 것은 x축 방향에서 이 그래프를 보면 점(0, 0)은 극소점처럼 보인다. 그런데 y축 방향에서 보면 점(0, 0)은 극대점처럼 보인다. 안장은 '이건 극소점도 극대점도 아니여~' 개콘의 유행어가 생각나게 하는 특별한 친구다. 


<안장이 되는 조건>

이면, 은 안장이다. 



▶ 이변수함수 및 다변수함수를 행렬로 표현하기


지금까지 살펴보았던 이변수함수 로 나타낼 수 있다. 여기서 A는 2x2 대칭행렬이다. 



그렇다면 어떤 2x2 대칭 행렬을 보면 바로 이 행렬이 양의 정부호인지 음의 정부호인지 아니면 안장인지를 결정할 수 있다. 예를 들어, 



는 양의 정부호 행렬일까, 음의 정부호 행렬일까, 아니면 안장 행렬일까? a = 2, b = 2, c = 1이므로 a > 0이고 이다. 따라서 행렬A는 안장 행렬이다. 하나의 예를 더 살펴보자. 



은 어떤 행렬일까? a<0이고 이므로, 음의 정부호 행렬이다. 


이제 이변수를 넘어서 n개의 변수가 있는 경우로 확장해보자. 



행렬 A가 3 x 3 이상인 경우에는 방금 이용했던 a의 부호와 ac와 간의 관계를 이용해서 양의 정부호인지 음의 정부호인지 안장인지 판단할 수 없다. 0벡터인 x를 제외하고 가 된다면 양의 정부호일 것인데 이것을 어떻게 알 수 있을까?



▶ 어떤 행렬이 양의 정부호 행렬인지 아닌지 테스트하는 방법 


판단하는 방법은 매우 간단하다. 아래의 5가지 중에 아무 테스트나 통과하면 그 행렬은 바로 양의 정부호 행렬이다. 그러므로 행렬을 보고 아래 5가지 중에 가장 계산하기 쉬운 방법을 택하면 된다.


<양의 정부호 행렬의 조건>

1. 영이 아닌 모든 실수 벡터 x에 대해서 을 만족한다.

2. 행렬 A의 모든 고유값들이 0보다 크다.

3. 행렬 A의 모든 서브행렬들(상위 왼쪽 서브행렬들)의 행렬식들이 0보다 크다.

4. 행렬 A의 모든 피봇들이 0보다 크다.  

5. 인 독립 열들을 지닌 행렬 R이 존재한다. 



>> 왜 이 조건 중에 하나라도 만족하면 행렬A가 양의 정부호 행렬인지 하나씩 증명해보자. 별로 어렵지 않으니 한 번 꼭 읽어보자. 


1. 이것은 별도로 증명할 필요가 없다. 단지 양의 정부호 행렬에 대한 정의이기 때문이다. x가 영벡터인 경우를 제외하고 이어야 양의 정부호이기 때문이다. 


2.  행렬 A가 양의 정부호라는() 가정 하에 모든 고유값들이 양수가 되는지 먼저 확인해보자. 이므로,



이 되는데, 여기서 이 되려면 반드시 가 양수가 되어야 한다. 따라서 행렬 A가 양의 정부호라면 모든 고유값들은 양수이다. 


이번에는 반대로 고유값들이 양수라는 가정 하에 를 만족하는지를 살펴보자. 모든 대칭 행렬들은 정규직교인 고유벡터들을 풀세트로 가지고 있다. 그래서 어떤 x이든 그들의 조합으로 표현될 수 있다.



그러면, 



이다. 이므로, 



이 된다. 모든 고유값들이 양수이므로 자연스럽게 이 만족된다. 쌍방향으로 만족하므로 양의 정부호 행렬은 양의 고유값들을 갖는다는 것이 증명되었다. 


3. 행렬 A의 행렬식은 모든 고유값들의 곱이다: . 두번째 조건에서 증명한 것과 같이 양의 정부호 행렬은 모든 고유값들이 양수이기 때문에 당연히 det(A)도 양수가 된다. 그런데 서브행렬들(상위 왼쪽 서브행렬들)의 행렬식들도 양수가 된다는 것은 어떻게 증명할 수 있을까? 벡터 x의 요소 중 k번째까지는 0이 아니고, 그 이후의 값들은 0인 경우를 생각해보자. 



결과적으로 A의 모든 서브행렬들()이 양의 정부호가 된다. 양의 정부호이므로 모든 조건2에 의해 모든 고유값들이 양수가 되고, 모든 서브행렬의 행렬식들도 모두 양수가 된다.


4. 세번째 조건을 통해 양의 정부호행렬에서 모든 서브행렬의 행렬식은 양수라는 것을 증명했다. k번째 피봇은 이므로, 모든 피봇은 양수가 된다. 


5. 행렬 A가 로 분해되고 행렬 R이 선형독립인 열벡터들을 가지고 있다면,  



와 같이 전개된다. 즉, 이 되므로, 을 만족시키는 선형독립인 열벡터들을 가지는 행렬 R이 존재한다면 행렬 A는 양의 정부호이다.  


조금은 길었던 증명 파트를 읽으시느라 수고가 많으셨습니다. 그러면 이제 실제로 한번 위의 조건들을 이용해서 행렬들이 양의 정부호인지 아닌지를 판단해보자. 



가장 간단해 보이는 세번째 방법을 통해 테스트 해보자. 모든 상위 좌측 서브행렬들의 행렬식이 0보다 클까? 하나씩 계산해보자. 



모든 상위 좌측 서브행렬들의 행렬식이 0보다 크므로 행렬 A는 양의 정부호이다. 고유값을 이용하는 두번째 방법을 통해서 테스트해보자. 모든 고유값들이 0보다 크면 양의 정부호이다. 



보다시피 모든 고유값들이 양수이다. 따라서 행렬 A는 양의 정부호이다. 



▶ 정리 


지금까지 양의 정부호, 음의 정부호, 안장에 대해서 설명한 후, 어떤 행렬이 양의 정부호인지 아닌지를 판단하는 테스트를 소개했다. 양의 정부호란 0벡터를 제외하고 모든 함수값이 0보다 큰 경우이다(). 양의 정부호는 극소점을 가지며 그래프의 모양은 그릇 형태이다. 음의 정부호는 반대로 0벡터를 제외하고 모든 함수값이 0보다 작은 경우이다(). 이때는 극대점을 가지며 뒤집혀진 그릇 형태의 그래프를 갖는다. 안장은 극소점도 극대점도 아닌 안장점을 지닌다. 그래프 형태가 말 안장 같이 생겼기 때문에 안장이다. 


어떤 n x n 행렬이 양의 정부호행렬인지 테스트하는 방법은 총 다섯 가지가 있다. 첫번째는 직접 인지 확인해보는 것이다. 두번째는 모든 고유값들이 양수인지 확인하는 것이다. 세번째는 모든 상위 좌측 서브행렬들의 행렬식이 양수인지 확인하는 것이다. 네번째는 모든 피봇들이 양수인지 확인하는 것이다. 마지막 다섯번째 방법은 를 만족시키는 행렬 R(선형독립인 열벡터들을 가지는)의 존재 여부를 확인하는 것이다. 이 다섯 가지 테스트 중에 하나만 확인해봐도 행렬이 양의 정부호인지 아닌지를 판단할 수 있다. 



함께 읽으면 도움이 될 글 => https://bskyvision.com/661, [선형대수학] 헤시안 행렬과 극소점, 극대점, 안장점




<참고 자료>

[1] https://ko.wikipedia.org/wiki/%EC%95%88%EC%9E%A5%EC%A0%90 => 위키백과, 안장점

[2] http://mskyt.tistory.com/79 => 헤시안의 행렬식(ac - b^2)이 0보다 크면 양의 정부호. 

[3] Gilbert Strang, Linear algebra and its applications, 4판, p. 311-320.

[4] http://matrix.skku.ac.kr/2014-Album/Quadratic-form/4.Hessian%20matrix.htm => 헤시안 행렬


댓글()
  1. oon 2018.06.06 22:53 댓글주소  수정/삭제  댓글쓰기

    매번 큰 도움이 됩니다..

  2. 감사합니다 2018.11.05 13:36 댓글주소  수정/삭제  댓글쓰기

    좋은 예제와 그림, 쉬운 설명 덕에 많이 알아갑니다. 감사합니다!

  3. 2019.03.18 19:44 댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • BlogIcon bskyvision 심교훈 2019.03.18 22:56 신고 댓글주소  수정/삭제

      <양의 정부호 행렬의 조건>을 보시면, 5가지가 있는데 그 중 어떤 하나라도 만족한다면 그 행렬은 양의 정부호 행렬입니다.

      제가 제시해주신 행렬의 고유값을 구해보니 1, 2, 3이 나왔습니다. 고유값이 모두 양수이기 때문에 이 행렬은 양의 정부호 행렬입니다.^^

  4. FE 초보 2019.06.14 15:03 댓글주소  수정/삭제  댓글쓰기

    안녕하세요~ 알아보기 쉽게 설명해주셔서 큰 도움 받고 갑니다~^^ 질문이 한가지 있는데, positive definite 인 matrix 가 갖는 특징, 혹은 장점이 있을까요? FE 공부중인데, 관련 matrix 가 positive definite 을 증명하는 부분은 있는데, 왜 이러한 성질이어야 하는지에 대해서 언급된 건 찾기가 어렵네요.

    • BlogIcon bskyvision 심교훈 2019.06.14 17:47 신고 댓글주소  수정/삭제

      질문 감사합니다. FE가 어떤 것의 약자인지는 잘 모르겠지만, 정부호 행렬의 특성은 행렬이 positive definite, 모든 고유값들이 양수, 모든 서브행렬들의 행렬식이 양수, 모든 피봇들이 양수다. 정도로 정리가 가능하지 않을까 싶네요..^^

  5. ocy 2019.12.04 20:04 댓글주소  수정/삭제  댓글쓰기

    정말 잘 읽었습니다. 감사합니다!!

  6. ocy 2019.12.04 20:04 댓글주소  수정/삭제  댓글쓰기

    정말 잘 읽었습니다. 감사합니다!!

  7. 감사합니다 2019.12.08 02:31 댓글주소  수정/삭제  댓글쓰기

    [2y 0 0]
    [0 0 0]
    [0 0 0] 인 H를 갖으면 어떻게 되나요?
    즉 H2=0이 되면 이것도 안장점으로 봐야하나요?
    본 식은 f=y×x^2 + ln(z) 입니다.

    • BlogIcon bskyvision 심교훈 2019.12.09 10:56 신고 댓글주소  수정/삭제

      H가 헤시안 행렬 뜻하는 것이죠?? 우선 H를 잘못 구하신 것 같습니다. 제가 구했을 때는
      [2y 2x 0]
      [2x 0 0]
      [0 0 -1/(z^2)]
      이 나옵니다.

      그런데 이 함수의 경우 임계점을 갖지 않기 때문에 극대점, 극소점, 안장점도 존재하지 않습니다.

      더 자세한 내용은 https://bskyvision.com/661을 참고하세요.^^

악인의 특징, 에5:7-14

삶/말씀과 찬양|2017. 11. 22. 12:07

에스더 5:7-14

7 에스더가 대답하여 이르되 나의 소청, 나의 요구가 이러하니이다

8 내가 만일 왕의 목전에서 은혜를 입었고 왕이 내 소청을 허락하시며 내 요구를 시행하시기를 좋게 여기시면 내가 왕과 하만을 위하여 베푸는 잔치에 또 오소서 내일은 왕의 말씀대로 하리이다 하니라

9 그 날 하만이 마음이 기뻐 즐거이 나오더니 모르드개가 대궐 문에 있어 일어나지도 아니하고 몸을 움직이지도 아니하는 것을 보고 매우 노하나

10 참고 집에 돌아와서 사람을 보내어 그의 친구들과 그의 아내 세레스를 청하여

11 자기의 큰 영광과 자녀가 많은 것과 왕이 자기를 들어 왕의 모든 지방관이나 신하들보다 높인 것을 다 말하고

12 또 하만이 이르되 왕후 에스더가 그 베푼 잔치에 왕과 함께 오기를 허락 받은 자는 나밖에 없었고 내일도 왕과 함께 청함을 받았느니라

13 그러나 유다 사람 모르드개가 대궐 문에 앉은 것을 보는 동안에는 이 모든 일이 만족하지 아니하도다 하니

14 그의 아내 세레스와 모든 친구들이 이르되 높이가 오십 규빗 되는 나무를 세우고 내일 왕에게 모르드개를 그 나무에 매달기를 구하고 왕과 함께 즐거이 잔치에 가소서 하니 하만이 그 말을 좋게 여기고 명령하여 나무를 세우니라



▶ 줄거리


본문의 배경이 되는 지금까지의 에스더서의 스토리를 먼저 정리해보자. 기존의 왕후였던 와스디가 아하수에로 왕의 미움을 받게 되어 왕후를 새로 구하던 중에 유대인인 에스더가 선택되었다. 에스더의 사촌인 모르드개는 에스더를 딸 같이 여겨 양육해왔었다. 모르드개는 에스더를 잘 보호하기 위해서 대궐문을 지키는 공무원에 지원하였고 거기에서 일하게 되었다. 그 후에 왕이 하만이라는 자의 지위를 자신 다음으로 높게 하였다. 하만은 모르드개가 자신에게 무릎을 꿇어 절하지 않았다는 이유로 모르드개 뿐만 아니라 모든 유대인을 죽이려는 계획을 세운다. 왕의 총애를 받았던 그의 계획은 통과가 되고 전국적으로 정해진 날에 모든 유대인을 죽이라는 명령이 떨어진다. 이 소식을 들은 모르드개와 모든 유대인들은 애통해했다. 모르드개는 에스더에게 지금 너는 왕궁에 있다고 혼자 목숨을 건질 생각하지 말고 왕에게 가서 도움을 요청하라고 부탁한다. 에스더는 제아무리 왕후라도 왕의 부름없이 왕에게 나아가는 것은 불법이라 사형을 당할 수도 있지만 민족을 살리기 위해 "죽으면 죽으리라" 죽음을 무릅쓰고 나아가겠다고 결심하고 3일 동안의 금식기도를 부탁한다. 삼일 후에 에스더는 왕후의 예복을 입고 왕을 찾아간다. 왕은 그 모습이 너무 아름다워서 에스더에게 은혜를 베풀어 죽이지 않을 뿐더러 소원을 말하면 들어주겠다고 약속한다. 에스더는 하만과 함께 자신이 준비한 잔치에 와달라고 부탁한다. 왕은 급히 하만을 불러 함께 잔치에 참여한다. 


이러한 상황에서 오늘의 본문이 이어진다. 에스더는 내일도 하만과 함께 잔치에 참여하시면 그 소원을 말씀드리겠다고 한다. 하만은 왕후가 잔치에 왕과 자신만을 초대한 것으로 인해서 매우 흥분하고 기뻤다. 자신이 그만큼의 위치가 된다는 것을 증명해준 사건이라고 생각해서였을 것이다. 그리고 집으로 가던 중에 대궐문을 지키고 있는 모르드개를 보는데 여전히 자신에게 예의를 갖추지 않는 것을 보고 매우 분노했지만 참고 집으로 간다. 가서 친구들과 아내들에게 자신이 얼마나 대단한 사람인지를 자랑한다. 자신이 얼마나 큰 영광을 누리고 있는지, 자녀가 얼마나 많은지, 왕이 자신의 지위를 얼마나 높였는지, 또 왕후가 왕과 자신만 초대한 사실 등을 신나서 이야기한다. 그런데 자신에게 예의를 갖추지 않는 모르드개를 보니 이 모든 일이 만족스럽지 않다고 불평한다. 하만의 친구들과 아내는 십자가 처형대를 만들어서 거기에 모르드개를 처형해달라고 왕에게 부탁드리라고 조언한다. 하만은 그 말을 좋게 여겨 십자가 처형대를 만든다. 



▶ 악인의 특징


하만의 이러한 모습을 통해서 우리는 악인의 특징을 정리해볼 수 있다. 


1. 사리 분별을 하지 못한다: 하만은 왕후의 잔치에 왕과 자신만이 초대되었다는 사실로 인해 매우 즐거워한다. 하지만 왕후가 왜 왕과 자신을 그곳에 초대했는지는 전혀 눈치채지 못하고 있다. 


2. 헛된 것에 분노한다: 모르드개 한 사람이 자신에게 예의를 갖추지 않는다는 사실에 매우 분노한다. 작은 일도 관대하게 넘어가질 못한다. 모든 사람이 자신을 인정하고 높여야만 직성이 풀린다. 


3. 하나님이 아닌 스스로를 높인다: 자기가 얼마나 잘났는지 자랑한다. 자신을 그 높은 자리에 세우신 하나님과 왕에 대한 감사는 찾아볼 수 없다. 자신이 높은 자리에 있다는 그 사실 자체에만 주목한다. 그 자리에서 어떤 책임을 가지고 백성을 섬길 것인가에 대해서는 관심이 없다. 


4. 만족하지 않는다: 엄청난 부귀영화를 누리고 있음에도 모르드개의 존재로 인해 현실에 만족하지 않는다. 이미 가진 것에 만족하지 않고, 없는 것에 배아파한다. 


5. 악한 친구들만 사귄다: 하만의 주변에는 악한 친구들만 가득했다. 모르드개를 처형해달라고 왕께 부탁하라는 친구들과 아내의 조언을 그대로 시행한다. 자신이 듣고 싶은 이야기를 해주는 친구들과만 교제했다. 


나에게도 이러한 모습들이 있지 않은가? 나는 세상을 제대로 바라보며 잘못된 것과 옳은 것을 분간하고 있는가? 관대하게 포용하며 넘어갈 수 있는 사소한 것에 분노하며 에너지를 낭비하고 있지는 않는가? 하나님께 영광을 돌리지 않고 내가 그 영광을 다 가로채야만 직성이 풀리지는 않는가? 주신 것에 만족하지 못하고 끝없이 욕심을 부리고 있지는 않는가? 내 주변에는 올바른 가치관을 가지고 나에게 선한 조언을 해주는 친구들이 있는가?


우리에게는 모두 죄성이 있기 때문에 이러한 모습들을 어느 정도씩 가지고 있다. 매일 주님의 통치를 받고자 기도하며 말씀에 따라 살지 않는다면 하만과 크게 다를게 없는 인생을 살게 된다. 

댓글()

[Grammar in use intermediate] 동명사와 to부정사 둘 다 목적어로 취할 수 있는 동사

삶/영어|2017. 11. 20. 19:15

지난번에는 동명사를 목적어로 취하는 동사와 to부정사를 목적어로 취하는 동사에 대해서 알아봤다(http://bskyvision.com/178). 동명사를 목적어로 취하는 동사과거의 의미를 지니고 있고, to부정사를 목적어로 취하는 동사미래의 의미를 지니고 있다고 설명했었다. 오늘은 동명사와 to부정사 둘 다 목적어로 취할 수 있는 동사들에 대해서 정리하려고 한다. 



동명사와 to부정사 둘 다 목적어로 취할 수 있는 동사(의미 차이 無)


begin, start, continue, bother


위 동사들은 동명사와 to부정사 모두 목적어로 취할 수 있으며 의미 차이가 없이 사용되는 친구들이다. 예문을 통해 어떻게 사용되는지 확인하자.


예문1>> It has started raining. = It has started to rain. 비가 오기 시작했다.

예문2>> The baby began to cry in the middle of the night. = The baby began crying in the middle of the night. 그 아기는 방 중에 울기 시작했다. 


그런데 이와 달리 동명사와 to부정사 둘 다 목적어로 취할 수 있으나 의미 차이가 생기는 동사들도 있다. 



▶ 동명사와 to부정사 둘 다 목적어로 취할 수 있는 동사(의미 차이 有)


remember, regret, go ontry, need

like, love, hate


위의 동사들이 동명사를 목적어로 취할 때 to부정사를 취할 때 어떤 의미차이를 갖는지 하나하나 살펴보자.


1) 'remember+동명사'어떤 것을 하고 난 후에 기억한다는 의미를 가진다. 반면 'remember+to부정사'어떤 것을 하기 전에 그것을 해야하는 것을 기억한다는 뜻이다. 예문을 살펴보자. 


예문3>> I know I locked the door. I clearly remember locking it. 나는 문을 잠근 것을 알아. 나는 그것을 잠근 것을 분명하게 기억해=> 했던 것을 기억.  

예문4>> Did you remember to call your sister? 너 여동생한테 전화해야 하는 거 기억했어? => 해야할 것을 기억. 


2) 'regret+동명사'어떤 것을 하고 난 후에 유감스러워하는 것인 반면, 'regret+to부정사'해야할 것에 대해 유감스러워하는 것이다.


예문5>> I now regret saying what I said. I shouldn't have said it. 나는 내가 한 말에 대해 지금 후회해. 나는 그것을 말하지 말았어야 했어. => 했던 것을 후회.

예문6>> We regret to inform you that we cannot offer you the job. 저희는 당신에게 직업을 제공할 수 없다는 것을 알려야 한다는 것에 유감입니다. => 해야할 것에 대해 유감. 


3) 'go on+동명사'같은 것을 계속한다는 의미고, 'go on+to부정사'새로운 어떤 것을 하거나 말하는 의미를 갖는다. 


예문7>> I can't go on working here any more. I want a different job. 나는 여기서 더이상 일하는 것을 계속할 수 없어. 나는 다른 직업을 원해. => 같은 것을 계속한다는 의미

예문8>> After discussing the economy, the president then went on to talk about foreign policy. 경제에 대해 토론한 후에, 의장은 외교 정책에 대해 이야기했다. => 경제에서 외교 정책으로 말하는 주제가 바뀌었다. 


4) 'try+동명사'노력하다, 시도하다는 의미인 반면, 'try+to부정사'시험삼아 해본는 의미이다. 


예문9>> We tried to put out the fire, but we were unsuccessful. 우리는 불을 끄기위해 노력했지만, 성공하지 못했다. => 노력의 의미

예문10>> 

A: I have a terrible headache. I wish I could get rid of it. 나 머리가 너무 아파. 두통을 제거할 수 있으면 좋을텐데.

B: Have you tried taking an aspirin? 아스피린 먹어 봤어? => 시험삼아 아스피린을 먹어보라는 의미. 혹시 나아질 수도 있으니. 


5) 'need+동명사'사물이 무엇을 필요로 할 때 쓰이고, 'need+to부정사'사람이 무언가를 필요로 할 때 쓰인다.  


예문11>> My cell phone needs charging. 내 휴대폰은 충전을 필요로 해. => 사물이 무언가를 필요로 함. 

예문12>> Your hair is getting very long. It needs cutting. 너 머리카락 많이 길어졌다. 너의 머리카락은 잘리는 것을 필요로 해. => 사람의 일부분인 머리카락도 사물로 여긴다. 

예문13>> I need to get more exercise. 나는 더 많은 운동을 필요로 해. => 사람이 무언가를 필요로 함.

예문14>> He needs to work harder if he wants to make progress. 걔가 진전을 만들기 원한다면 더 열심히 일하는 것을 필요로 해. => 사람이 무언가를 필요로 함.


6) like, love, hate는 비슷한 특성을 가지므로 한데 모아 정리하겠다. 일단 반복된 행동에 대해 이야기할 때 like/love/hate 뒤에 동명사와 to부정사 모두 가능하다. 


예문15>> Do you like getting up early? = Do you like to get up early? 너 일찍 일어나는 것 좋아해? 

예문16>> I love meeting people. = I love to meet people. 나는 사람 만나는 것을 좋아해. 

예문17>> I hate being alone. = I hate to be alone. 나는 혼자 있는 것을 싫어해. 


만약 이미 존재하거나 존재했던 상황에 대해서 이야기할 때는 like/love/hate 뒤에 to부정사를 쓸 수 없고 동명사만을 사용할 수 있다. 


예문18>> Paul lives in Tokyo now. He likes living there. 폴은 지금 도쿄에 살고 있다. 그는 거기에 사는 것을 좋아한다. => 이미 도쿄에 살고 있는 상황이므로. 

예문19>> The office I worked at was horrible. I hated working there. 내가 일했던 사무실은 끔찍했다. 나는 거기에서 일하는 것을 싫어했다. => 존재했던 상황이므로. 


그리고 like는 때때로 뒤에 to부정사가 올때와 동명사가 올때 의미차이를 보인다. 'like+동명사'무언가를 하는 것을 좋아한다는 의미를 갖는 반면, 'like+to부정사'무언가를 하는 것이 좋은 것이라고 생각하지만 그렇다고 그것을 반드시 즐기는 것은 아니라는 뜻을 가진다. 


예문20>> I like cleaning the kitchen. 나는 주방을 청소하는 것을 좋아해. => 주방 청소를 좋아하는 경우.

예문21>> It's not my favorite job, but I like to clean the kitchen as often as possible. 내가 좋아하는 일은 아니지만, 나는 되도록 자주 주방을 청소해. 



▶ 정리


지난 번에는 동명사만을, to부정사만을 목적어로 취하는 동사들에 대해서 살펴보았다. 오늘은 동명사와 to부정사 둘 다 목적어로 취할 수 있는 동사들에 대해 정리했다. 두 번의 포스팅을 통해 특정 동사들 뒤에 목적어로 동명사를 선택해야하는지 to부정사를 선택해야하는지 어느 정도 가이드라인은 제시했다. 이제 이 가이드라인을 참고해서 이러한 동사들을 가지고 실제로 말도 해보고, 작문도 하면서 익히는 것이 매우 중요하다. 너무 당연한 말로 끝을 맺는 것 같지만, 노력을 통해 얻는 실력은 결코 당연하지 않다. 



<참고 자료>

[1] Raymond Murphy, Cambridge, Grammar in use intermediate, p. 108-113

댓글()

'Just do it!', '주체사상'을 조심하자

삶/말씀과 찬양|2017. 11. 10. 18:21

예수님을 믿음으로 구원 받기 전에 나는 이 세상의 가치관을 따랐다. 내 마음이 하고 싶으면 그냥 했다. 부끄러운 일이지만, 중2 때 컨닝으로 전교 3등까지 해본 적이 있었다. 양심에 가책을 느끼긴 했지만, 다른 사람한테 안 걸렸으니까 괜찮다고 생각했었다. 또한 야동을 언제든 보고 싶으면 봤다. 역시 양심에 가책을 느꼈지만, 부모님한테 걸리지만 않으면 괜찮다고 생각했었다. 또한 삶의 목적은 내가 잘 먹고 잘 사는 것이었다. 그래서 공대에 가면 좀 더 안정적인 직장에 갈 수 있을 것 같아서 이과와 공대를 선택했다. 용기와 돈이 없어서 그렇지 아마 그 두 가지가 모두 있었다면 무슨 일이든 했을 것이다. 나이키의 광고 문구처럼 "just do it!"이 내 인생의 표어였다. 


그런데 대학교에 진학하고 신입생으로 지내던 어느날, 나는 하나님을 믿게 되었다. 예수님이 나의 죄를 대신하여 십자가에 죽으셨다는 그 사실이 믿어졌다. 부모님을 따라 태어났을 때부터 한 주도 빠짐없이 교회에 갔지만 사실 큰 감흥은 없었다. 그저 친구들 만나서 축구하고 탁구치려고 갔었다. 구원은 정말 하나님의 선물이었다. 내가 한 것은 예수님이 나를 위해 하신 일을 단지 믿는 것 밖에 없었다. 근데 이조차도 자랑할 수 없는 것은 이 믿음 또한 선물로 주셨기 때문이다. 


그 이후에 나는 다시는 컨닝을 하지 않게 되었다. 왜냐하면 하나님이 불의하게 성적을 받는 것을 싫어하시고, 사람들이 보지 못하더라도 하나님은 모든 것을 보고 계시다는 것을 알게 되었기 때문이다. 또한 성적이 양심을 팔 가치가 있을 만큼 그렇게 중요한 것은 아니라는 것을 알게되었다. 그리고 야동을 안 보려고 노력하기 시작했다. 하나님께서 마음으로든 눈으로든 간음하는 것은 죄라고 말씀하셨기 때문이다. 습관이 되어버린 것을 끊는 것은 정말 오랜 시간의 싸움이 필요했다. 그리고 무엇보다 삶의 가치관이 바뀌었다. 혼자 잘 먹고 잘 사는 것에서 하나님께 영광을 돌리고 이웃의 삶을 풍요롭게 하는 것이 인생의 목적이 되었다. 


여전히 예수님을 믿지 않을 때의 삶의 방식이 여전히 얼마간 남아있음을 발견한다. 여전히 내 마음대로 내 생각대로 살고 싶을 때가 종종 있다. 모든 선택의 순간에 하나님의 뜻보다는 그냥 내 생각대로 선택할 때가 있다. 이것이 말 그대로 북한의 '주체사상'이다. 주체사상은 "사람이 모든 것의 주인이며 모든 것을 결정한다"는 철학적 원리에 기초한 사상이다[1]. 내가 주인이 되어 인생을 경영하겠다는 것이다. 사실 사람들에게 '죄성'이라는 것이 없다면 이 사상이 그다지 나쁜 것이 아닐 수도 있다. 하지만 우리에게는 너무나도 악하고 악한 본성인 죄성이 존재한다. 기회만 있으면 죄를 지으려고 하는 것이 우리의 실상이다. 죄를 짓지 않는 사람은 단 한 명도 없다. 주변 동료들을 미워하고, 분을 참지 못해 언어적으로 살인을 범하기도 하고, 눈으로든 생각으로든 내 아내가 아닌 사람을 간음하고, 더 큰 이익을 얻기 위해 크고 작은 속임수를 사용하고, 지키지 않을 약속을 남발하고, 부모님을 충분히 공경하지 않고, 뇌물을 주고 받고, 아이들을 내 아바타로 키우려고 하는 등 우리가 범하고 있는 죄는 수없이 많다. 죄성은 우리가 각자 자기 마음대로 살 때 엄청나게 악한 결과가 초래되게 하는 근본적인 원인이다. 내가 인생의 왕좌에 앉아서 내 마음대로 살면 결국은 파경으로 치닫게 되어 있다. 우리는 우리가 생각하는 것만큼 그렇게 대단하지 않다. (하나님이 우리를 특별한 존재로 만드셨기에 특별하고 존귀한 것은 사실이지만 말이다.) 많은 사람들이 스스로가 엄청나게 선하고 이성적이고 합리적이라고 착각하고 있다. 


우리는 우리를 창조하셨기에 우리를 가장 잘 아시고 선과 악의 완전한 기준이 되시는 하나님을 우리의 왕좌에 모셔야 한다. 그분의 통치를 받아야 한다. 마음 속에 내주하시는 성령님과 대화하며 조언을 구하며 지도를 받으며 때로는 질책을 받으며 살아야 한다. 내가 하고 싶다고 뭐든지 다 해서는 안된다. 각 안건에 대해 하나님이 어떻게 생각하시는지 말씀과 기도와 양심을 통해 검증을 받아야한다. 통과해주신다면 하는 것이고, 막으셨다면 슬프더라도 하지 말아야 한다. 이 말이 하나님의 꼭두각시로 산다는 것은 아니다. 하나님은 우리에게 많은 것을 자유롭게 할 수 있도록 허용하셨다. 단 바운더리를 만들어주셨다. "이 선은 넘어가면 안 된단다. 왜냐하면 그것은 너와 이웃의 행복을 파괴하는 행동이거든." 그것이 바로 성경 말씀이다. 매순간 그분의 지도를 받는 행복한 인생을 살아가자. 


에베소서 2:1-10

1 그는 허물과 죄로 죽었던 너희를 살리셨도다

2 그 때에 너희는 그 가운데서 행하여 이 세상 풍조를 따르고 공중의 권세 잡은 자를 따랐으니 곧 지금 불순종의 아들들 가운데서 역사하는 영이라

3 전에는 우리도 다 그 가운데서 우리 육체의 욕심을 따라 지내며 육체와 마음의 원하는 것을 하여 다른 이들과 같이 본질상 진노의 자녀이었더니

4 긍휼이 풍성하신 하나님이 우리를 사랑하신 그 큰 사랑을 인하여

5 허물로 죽은 우리를 그리스도와 함께 살리셨고 (너희는 은혜로 구원을 받은 것이라)

6 또 함께 일으키사 그리스도 예수 안에서 함께 하늘에 앉히시니

7 이는 그리스도 예수 안에서 우리에게 자비하심으로써 그 은혜의 지극히 풍성함을 오는 여러 세대에 나타내려 하심이라

8 너희는 그 은혜에 의하여 믿음으로 말미암아 구원을 받았으니 이것은 너희에게서 난 것이 아니요 하나님의 선물이라

9 행위에서 난 것이 아니니 이는 누구든지 자랑하지 못하게 함이라

10 우리는 그가 만드신 바라 그리스도 예수 안에서 선한 일을 위하여 지으심을 받은 자니 이 일은 하나님이 전에 예비하사 우리로 그 가운데서 행하게 하려 하심이니라  


<참고 자료>

[1] http://terms.naver.com/entry.nhn?docId=553238&cid=46629&categoryId=46629 => 주체사상의 정의


댓글()
  1. 2017.11.06 01:18 댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. BlogIcon 문베디드 2017.11.15 11:15 신고 댓글주소  수정/삭제  댓글쓰기

    주체사상이라니...

선형 회귀(linear regression) 그리고 라쏘(Lasso)

일차 함수(y = ax + b)에 대해서는 중2때 처음 배웠다. 그때는 이것의 진정한 의미를 몰랐다. 그저 x값을 함수식에 넣어주면 y값이 나온다는 정도로 이해했다. 우리의 생활의 많은 현상을 일차 함수로 모델링해낼 수 있을 것이라고는 생각도 못했다. 예를 들어 기온과 포장마차에서 따뜻한 오뎅이 팔리는 수량도 어느 정도 선형 관계를 가질 것이다. '날씨가 추우면 추울수록 오뎅이 많이 팔릴테니까.' 선형 회귀가 무엇인지 직관적인 이해를 위해 아래 하나의 이야기를 만들어봤다.  


한 포장마차 주인이 한해동안 매일 기온과 오뎅 판매 수량을 계속 기록했다. 그랬더니 정말로 선형 관계가 있었다. 그래서 이 주인은 얻어낸 일차 함수식을 장사에 이용해보기로 했다. 어떻게 했냐면, 일기예보를 통해 알게된 내일의 기온을 일차 함수식에 대입했다. 그랬더니 내일 대략 몇개가 팔릴 것인지 예측할 수 있었다. 그래서 이 주인은 이 수량에 맞춰서 재료를 구입했고, 덕분에 신선하고도 가장 맛있는 오뎅을 판매할 수 있었다. 그리고 판매 예상량을 적절히 예측했기 때문에 아깝게 버리는 오뎅들도 거의 없었다. 소문을 들은 여러 사람들이 이 포장마차에 찾아오게 되었고 결국 엄청난 수익을 내게 되었다.  


이것이 바로 선형회귀를 우리의 삶에 적절히 이용한 하나의 예다. 선형회귀는 사용되는 특성(feature)의 갯수에 따라 단순 선형 회귀(simple linear regression)와 다중 선형 회귀(multiple linear regression)로 분류할 수 있다. 라쏘(least absolute shrinkage and selection operator, Lasso)는 선형 회귀의 단점을 극복하기 위해 개발된 하나의 방법이다. 그러면 단순 선형 회귀, 다중 선형 회귀, 라쏘에 대해서 순차적으로 알아보자. 



▶ 단순 선형 회귀와 다중 선형 회귀


단순 선형회귀단 하나의 특성(feature)을 가지고 라벨값(label) 또는 타깃(target)을 예측하기 위한 회귀 모델을 찾는 것이다. 이해를 위해 먼저 그림1을 보자. 


그림1. 하나의 특성과 라벨값의 관계를 가장 잘 설명해주는 직선을 찾아내는 것이 단순 선형 회귀다. [출처: 위키피디아]


파란색 점은 여러 샘플(sample)들인데 x좌표값은 샘플의 특성값을, y좌표값은 라벨값을 의미한다. 특성값이 커지면, 라벨값도 커지는 관계를 보이고 있다. 가장 이 현상을 잘 설명해주는 선형 함수를 찾아낸 것이 빨간색 선이다. 특성()과 라벨값() 사이의 관계를 설명해낼 수 있는 선형 함수(빨간선)를 찾아낸다면 새로운 데이터의 특성값이 주어졌을 때 그에 해당하는 라벨값을 예측해낼 수 있을 것이다. 주어진 데이터에 완벽하게 딱 들어맞는 선형 함수를 찾아내는 것은 일반적으로 불가능하지만, 최대한 특성과 라벨값의 관계를 가장 잘 설명해줄 수 있는 일차함수식을 찾아내는 것이 단순 선형 회귀의 목적이다. 아래 공식1을 통해 좀 더 구체적으로 이해해보자. 


...(공식1: 단순 선형 회귀를 위한 일반화된 예측 함수)


여기서 는 특성이고, 는 예측값이다. 일차함수적인 관점에서 보면 는 일차함수에서 기울기이고, 는 y절편이다. 그러나 여기서는 는 가중치(weight) 또는 계수(coefficient)라고 부르는 것이, 는 편향(offset)이라고 부르는 것이 더 적절하다. 여러 개의 샘플들의 특성값들과 라벨값들을 이용해서 가장 적합한 와 를 찾아야 한다. 보통 경사감소법(경사하강법)을 통해 찾는다. 경사감소법에 대한 내용은 링크건 포스팅에서 확인하자(https://bskyvision.com/411). 최적의 와 를 찾았다면 공식1의 예측 함수를 이용해서 새로운 데이터의 특성값을 이용해서 예측값()을 구할 수가 있다. 


하지만 회귀모델을 만들 때, 단 하나의 특성만 가지고 있다면 충분한 예측능력을 보이는 모델을 만들기는 상당히 어렵다. 위에서 오뎅 판매 수량을 단 하나의 특성, 그날의 기온으로 예측했지만 사실상 더 많은 특성들을 고려해야만 제대로 된 결과를 예측해 낼 수 있을 것이다. 요일마다 판매량이 다를 수도 있고, 기온 뿐만 아니라 비가 오거나 눈이 오는 상황도 판매량에 영향을 미칠 것이다. 또한 티비 프로그램에 오뎅을 맛있게 먹는 장면이 나왔다면 판매량이 많아질 수 있다. 이러한 특성을 동시에 고려해야만 좀 더 정확한 예측 모델을 만들 수 있기 때문에, 대부분의 경우에 하나의 특성이 아닌 여러 개의 특성을 활용해서 회귀모델을 만든다. 이것이 바로 다중 선형 회귀다. 다중 선형 회귀를 위한 일반화된 예측 함수는 아래와 같다. 


...(공식2: 다중 선형 회귀를 위한 일반화된 예측 함수)


여기서 특성은 총 p+1개다. 그에 따라 가중치도 총 p+1개가 필요하다. 이번에는 주어진 여러 개의 샘플들의 p+1개의 특성들(, 즉 )과 라벨값() 사이의 관계를 잘 설명해낼 수 있는 적합한 , 즉 와 를 찾아내야 한다. 찾고 나면 공식2를 이용해서 라벨값이 없는 새로운 데이터의 예측값을 구할 수 있다. 특성이 하나였을 때는 선형 모델이 직선이 되었지만, 특성이 두개면 평면, 더 높은 차원에서는 초평면(hyperplane)이 되는 특징을 가지고 있다. 


그러면 단순 선형 회귀와 다중 선형 회귀에서 어떻게 적절한 가중치와 편향을 찾아낼 수 있을까? 이 부분이 중요하다. 선형 회귀는 라벨값()과 예측값() 사이의 평균제곱오차(mean squared error, MSE)를 최소화하는 파라미터 와 를 찾는다. 이 방법을 사용하는 이유는 실제 라벨값과 예측값의 차이가 작으면 작을 수록 예측성능이 좋은 것이기 때문이다. 


...(공식3: 평균제곱오차)


여기서 n은 샘플 개수이고, 는 각각 훈련셋 내의 i번째 샘플의 라벨값과 예측값을 의미한다. 공식3은 n개의 샘플들의 라벨값과 예측값 사이의 평균 제곱 오차의 평균을 구한 것이다. MSE를 최소화하는 파라미터 와 를 찾는 것이 선형 회귀의 목적이다. 


...(공식4: MSE를 최소로 만드는 w, b 찾기)


그런데 다중 선형 회귀 모델은 과대적합(overfitting) 될 때가 종종 있다. 주어진 샘플들의 특성값들과 라벨값의 관계를 필요이상으로 너무 자세하게 복잡하게 분석했다는 것이다. 그러다 보니 새로운 데이터가 주어졌을 때 제대로 예측해내기가 어렵다. 즉 일반화 능력이 떨어진다는 것이다. 이것을 해결하기 위해 릿지(Ridge)와 라쏘(Lasso) 방법이 제안되었는데 여기서는 라쏘 위주로 설명하겠다. 



▶ 라쏘(Lasso)


기존의 선형 회귀에서는 적절한 가중치와 편향을 찾아내는 것이 관건이었다. 라쏘는 거기에 덧붙여서 추가 제약 조건을 준다. 어떠한 제약을 줬냐하면, MSE가 최소가 되게 하는 가중치와 편향을 찾는데 동시에 가중치들의 절대값들의 합, 즉 가중치의 절대값들이 최소(기울기가 작아지도록)가 되게 해야한다는 것이다. 다시 말해서 가중치()의 모든 원소가 0이 되거나 0에 가깝게 되게 해야한다. 따라서 어떤 특성들은 모델을 만들때 사용되지 않는다. 어떤 벡터의 요소들의 절대값들의 합은 L1-norm이므로 라쏘는 간단히 말해서 L1-norm 패널티를 가진 선형 회귀 방법이다. 공식5를 보자. 


 ...(공식5: MSE + penalty)


여기서 m은 가중치의 개수를 의미하고(따라서 특성의 개수도 됨), 는 페널티의 효과를 조절해주는 파라미터이다. 의 값이 커지면 패널티 항의 영향력이 커지고, 의 값이 작아져서 거의 0이 되면 선형 회귀와 같아진다는 것을 알 수 있다. MSE와 penalty 항의 합이 최소가 되게 하는 와 를 찾는 것이 라쏘의 목적이다. 


...(공식6: MSE + penalty를 최소로 만드는 w, b 찾기)


그런데 도대체 이러한 방법으로 어떻게 과대적합을 피하는 일반적인 모델을 만들어낸다는 것일까? 우선 MSE항이 작아질 수록 라벨값들과 예측값들의 차이가 작아지고, L1-norm이 작아질 수록 많은 가중치들이 0이 되거나 0에 가까워진다는 것을 기억하자. 이런 상황에서 가 크면 많은 가중치들이 0이 되거나 0에 가까워지게 하는 것에 좀 더 큰 비중을 두게 되는 반면, 훈련셋에서의 예측정확도는 상대적으로 덜 중요해진다. 왜냐하면 가 클 때는 전체값(MSE+penalty)이 L1-norm에 좌지우지되기 때문이다. L1-norm이 커지면 전체값이 커지므로 전체값을 최소가 되게 하기 위해서는 L1-norm을 작게 만드는 것이 우선순위가 된다. 반면 가 작으면 훈련셋에서의 예측정확도(MSE)가 작아지게 하는 것에 좀 더 큰 비중을 둔다. 전체값이 MSE에 의해 좌지우지 되기 때문이다. 따라서 가 너무 작으면 과대적합(복잡도가 너무 큼)이 되고, 너무 크면 과소적합(복잡도가 너무 작음)이 된다. 라쏘에서 구체적으로 의 값의 크기에 따라 어떤 일이 발생하는지 간단한 예를 들어보겠다. 


총 105개의 특성을 라쏘 회귀 모델을 만들기 위해 사용했다. 로 설정했더니 105개의 가중치 중에서 101개가 0이 되면서 특성은 단 4개만 사용되었다. 훈련셋에서의 점수와 테스트셋에서의 점수를 보니 과소적합이었다. 따라서 복잡도를 높이기 위해서 로 설정했더니 가중치 중에서 7개만 0이 되면서 94개의 특성이 사용되었다. 훈련셋과 테스트셋에서의 점수를 보니 훈련셋에서는 좋은데 테스트셋에서는 많이 떨어졌다. 즉, 과대적합이었다. 따라서 다시 복잡도를 낮추기 위해 을 사용했다. 105개의 가중치 중에서 72개가 0이 되면서 33개의 특성이 사용되었다. 훈련셋에서의 점수와 테스트셋에서의 점수가 모두 괜찮았다. 


이런 식으로 적절한 값은 사용자가 cross-validation을 통해 설정해줘야 한다. 거의 모든 기계 학습 알고리즘은 알고리즘의 복잡도를 결정짓는 와 같은 파라미터를 갖고 있다. 귀찮지만 사용자가 적절한 값을 찾아서 설정해줘야 한다. 예를 들어, SVM에서는 C와 gamma가 복잡도를 결정짓는 파라미터들을 갖고 있다. (관심이 있다면 SVM에 대한 포스팅 http://bskyvision.com/163을 참고하자). 


라쏘의 장점은 크게 두가지로 볼 수 있다. 첫번째는 제약 조건을 통해 일반화된 모형을 찾는다는 것이다. 두번째는 가중치들이 0이 되게 하므로써 그에 해당하는 특성들을 제외해준다. 결과적으로 모델에서 가장 중요한 특성이 무엇인지 알게되는 등 모델 해석력이 좋아진다.


마지막으로 라쏘와 굉장히 유사한 릿지에 대해 간단히만 언급하자면 패널티 항에 L1-norm 대신에 L2-norm 패널티를 가진다. 차이가 있다면 라쏘는 가중치들이 0이 되지만, 릿지의 가중치들은 0에 가까워질 뿐 0이 되지는 않는다. 특성이 많은데 그중 일부분만 중요하다면 라쏘가, 특성의 중요도가 전체적으로 비슷하다면 릿지가 좀 더 괜찮은 모델을 찾아줄 것이다. 



▶ 정리


여러 샘플들의 하나의 특성과 라벨값의 관계를 찾아내는 단순 선형 회귀, 여러 개의 특성과 라벨값의 관계를 찾아내는 다중 선형 회귀, 그리고 선형 회귀에 L1 규제를 줘서 과대적합을 피하는 방법인 라쏘까지 쭉 정리해보았습니다. 필요하신 분들께 도움이 되기를 바라며 글을 마칩니다. 좀 더 발전된 글을 위해서 피드백을 남겨주시면 매우 감사하겠습니다. 긍정적인 내용이든 부정적인 내용이든 상관없으니 댓글을 남겨주세요. :D


선형회귀, 라쏘회귀, 릿지회귀에 관한 파이썬 코드는 아래 글들을 참고하세요.^^

[파이썬] 선형 회귀(linear regression)

[파이썬] 선형 회귀의 업그레이드 버전1, 릿지 회귀

[파이썬] 선형 회귀의 업그레이드 버전2, 라쏘 회귀




<참고 자료>

[1] https://en.wikipedia.org/wiki/Lasso_(statistics) => 위키피디아, 라쏘

[2] http://sosal.kr/868 => 라쏘. 

[3] https://m.blog.naver.com/PostView.nhn?blogId=libido1014&logNo=120122338861&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F => 다중 선형회귀

[4] 안드레아스 뮐러, 세라 가이도 지음, 박해선 옮김, "파이썬 라이브러리를 활용한 머신러닝", 한빛미디어 

댓글()
  1. 안륜호 2018.05.29 16:49 댓글주소  수정/삭제  댓글쓰기

    정말 쉽게 이해가 잘되게 정리 잘해 놓으셨네요. 감사합니다.

  2. BlogIcon walkingfox 2019.01.25 12:16 댓글주소  수정/삭제  댓글쓰기

    좋은글 잘 봤습니다.
    감사합니다.

  3. 쏴라 2019.02.09 12:30 댓글주소  수정/삭제  댓글쓰기

    정말 이해하기 쉽게 설명 잘하셨네요. 큰 도움 얻고 갑니다.

  4. dss 2019.03.17 22:36 댓글주소  수정/삭제  댓글쓰기

    글 잘읽었습니다. 감사합니다. 근데 왜 라쏘는 가중치가 0이 될 수도 있는건지 잘 이해가 안되네요.
    아마 제 배움이 아직 부족한 탓인거 같습니다 ㅎㅎㅎ 블로그 보고 부지런히 공부하겠습니다.

    • BlogIcon bskyvision 심교훈 2019.03.18 22:37 신고 댓글주소  수정/삭제

      질문 감사합니다.^^ 위에 공식 6을 보시면 라쏘의 목적함수가 있습니다. 목적 함수에서 첫번째 항은 MSE에 관한 것이고, 두번째 항은 penalty에 관한 것입니다. 라쏘는 MSE가 최소가 되게 하는 가중치들을 찾는데, 동시에 그 가중치들의 합이 최소가 되는 것을 목적으로 합니다. 그 과정에서 어떤 가중치들은 0이 되곤 하는 것이죠. 절대값의 합이 최소가 되려면 0이 많을 수록 좋겠죠? 답이 되었는지 모르겠네요^^; 근데 질문을 받고 나니 저도 어느 정도 모호하게 알고 있는 부분이 있는 것 같습니다.