Biomedical Engineering Scientist doctorbme

안녕하세요, @doctorbme 입니다. 생업이 매우 바빠져서 글이 늦었습니다. 이번에는 음식이나 식단을 구성하는 데에 있어서 인공지능이 어떻게 쓰일 수 있는지 고찰해보는 시간을 가져볼까 합니다. 이번 주제의 경우에는, 여러 측면으로 살펴볼 예정이기에, 연작으로 계획하고 있습니다.

  1. 정상인을 대상으로 하는 식단 계획에서의 인공지능 활용 및 고려사항
  2. 환자를 대상으로 하는 식단 계획에서의 인공지능 활용 및 고려사항
  3. 식단에서 유의미한 정보를 추출하는 과정에서의 인공지능 활용 및 고려사항
  4. 식단 계획에서의 인공지능 활용을 추구하고 있는 여러 서비스들/기업들

이를 위한 논의에 앞서, 가장 기본이 되는 것이 바로 최적화(Optimization) 문제의 정의(definition) 입니다.

shutterstock_28013851111.jpg

어떤 사람에게 최적의 식단을 제시한다는 것은 무엇을 의미할까요? 여기에서 최적이라는 것은 어떤 것을 의미할까요? 사실 여기서 우리는 최적화(optimization)이라는 것이 무얼 의미하는지 살펴보아야 합니다.

최적화 문제로서의 식단 계획

최적화 문제는 사실 수학적으로 정의할 수 있습니다.

간단하게는 주어진 어떤 함수 f(x)를 최대화시키거나 최소화시키는 x를 찾는 것입니다. 물론 이러한 x를 찾기 위해서는 x가 어떠한 범위 안에서 존재하는지 문제에서 정의가 되어 있어야 합니다. 또한 제한 조건을 걸어주어야 하는데, 이는 다른 함수 h(x)나 g(x)를 통해 아래와 같이 나타낼 수 있습니다.

어떤 함수 f, h, g에 대해서,
h(x)=0 및 g(x)≤0 을 만족하는 가능한 해들 중에서
f(x)를 최소화 혹은 최대화하는 x를 찾는 것

실제 (식단) 문제에 대한 대응

이렇게 추상적으로 정의된 문제를 , 사실은 실제 영역으로 대응시키는 것이 중요합니다. 이번 글의 주제와 같이, 누군가에게 알맞은 식단을 구성하기 위해서는 다양한 요인들을 고려해야겠죠. 각 사람들의 몸상태와 근육량, 운동량 등에 맞춘 전체 칼로리, 탄수화물/지방/단백질의 비율과 총량, 소듐/포타슘과 같은 전해질의 양, 비타민과 같은 여러 물질들. 예를 들어 x를 하루 동안 제공될 식단이라고 생각하면, 이러한 식단을 입력으로 하는 어떤 함수 f를 정의할 수 있을 것입니다.

이 경우, 어떤 사람이 각 음식에 대한 나름의 선호도를 가지고 있다고 생각해봅시다. 그러면 식단을 구성할 때에는, 이러한 선호도 혹은 취향에 가장 근접한 식단을 찾는 것이 유리할 것입니다. 즉, 좋아하는 음식을 반영하라는 철학이 들어가 있는 것입니다.

그렇다면 이 때 제한조건들은 어떻게 설정 해야할까요 앞서 제시한 칼로리 및 영양소를 설정해두는 것이 좋을 것입니다. 너무 과해도 안되고 너무 모자라도 안되겠죠.

예를 들어 아래 조건을 생각해봅시다.
(선호도를 반영하는 목적함수 f를 최대화시키는 것이 가장 주요한 목적임은 기본으로 가정하도록 하겠습니다.)

이는 식단이 제공하는 전체 칼로리가 2000~3000 kCal사이를 가져야한다는 조건입니다.


위 함수를, 주어진 식단 x에 대해서, 칼로리를 계산하는 함수로 놓습니다.
이를 최적화 문제의 꼴로 어떻게 나타낼 수 있을까요.

1)
2)

위와 같이 두 개의 조건을 구성하고, 새로운 함수들을 아래와 같이 정의합니다.

그러고 나서 아래의 조건을 만들면 됩니다.

즉, 앞선 최적화 문제의 수학적 꼴이, 사실은 일반적인 상황을 반영한다는 뜻이 됩니다.

입력 x의 구조

그렇다면 선호도 함수 f에 들어가는 x는 어떤 구조로 정의하면 좋을까요? 여러 연구나 개발마다 정의하는 방식은 다르겠지만, 여기에서는 음식에 따라 임의적으로 설정할 수 있다고 가정해봅시다. 그러니까 어떤 음식에 대한 선호도는 미리 사용자가 직접 숫자로 입력해 놓을 수도 있고 아니면 기존의 식단 구성에 따라서 선호도를 자동적으로 파악할 수도 있을 것입니다.

예를 들면 아래와 같이 정의할 수 있습니다

즉 위 정의에서는 하루에 5번 식사한다고 가정하고 각 식사에 대해 각각의 벡터 요소를 부여합니다. 그러면 예를 들어 아침 식단은 어떻게 정의할 수 있을까요? (계층적으로 정의하고 있습니다.)

이런 식으로 정의한다면, 아침은 각각 음식(dish)들의 조합으로 표현될 수 있을 것입니다. 이제 이러한 음식의 속성(attribute)을 정의할 수 있겠습니다. 역시 여러 방법이 있겠지만, 아래와 같이 정의해봅시다. (이러한 속성은 문제를 얼마나 많은 사항을 고려하느냐에 따라 더 복잡해질 수도 있습니다.)

결국 선호도를 가장 크게 하는 방향으로 음식들을 조합할 예정인데, 이 때 전체 식단에 대해 탄수화물을 얼마나 넣을지, 소듐 (나트륨)을 얼마나 제한할지, 영양권장량과 개인의 상태에 따라서 (제한 조건을 고려하여) 해를 도출하는 것이 필요합니다. 그리고 이러한 해를 잘 도출하기 위해서는 각 음식들의 속성들이 잘 정의 되어 있어야 합니다. 그리고 선호도를 f에 어떻게 반영할 것이냐에 있어서는, 단순히 선호도를 더할 수도 있고, 평균을 낼 수도 있습니다. 아니면 f에 선호도 대신 다른 속성을 반영해봐도 되겠지요. f를 정의하는 방법도 다양합니다.

가장 간단하게, f의 선호도 함수는, f에 포함된 여러 음식들의 선호도를 단순하게 더하는 방향으로 정의해봅시다. 즉, f = 선택된 음식1의 선호도 + 선택된 음식2의 선호도 + …
이렇게 정의한다면, 하나 주의할 사항이 있습니다. 음식을 선택하면 선택할수록 음식 선호도의 합이 증가하기 때문에, 결국 f가 증가합니다. 따라서 적절한 제한조건을 걸어주지 않는다면, 무한정 음식을 선택하게 됩니다. 따라서, 또다른 함수 n(x)를 생각하고, n(x)를 x의 요소의 갯수를 세어주는 함수라고 생각한다면, n(x)를 특정 숫자, 혹은 고정된 범위로 지정해볼 수 있습니다. 예를 들면 아래와 같이 말이지요.

이 경우에는, 전체 음식의 갯수를 3~5 개로 제한하자는 이야기입니다.

이렇게 설정하면 무조건 5개를 선택하는 것이 아니냐고요? 꼭 그렇지는 않습니다. 다른 제한 조건들이 부가되면, 이 문제는 일종의 배낭문제(knapsack problem)가 됩니다. 배낭문제는, 한정된 공간 안에서 특정 부피를 가지는 물건을 채워넣고, 이 때 무게를 최대화하는 방법을 찾는 것인데, 우리는 흔히들 공간을 다 채울수록 무게가 많이 나간다고 생각하지만 꼭 그런 것은 아닙니다. 예를 들어 5L 의 공간 안에 물체를 채운다고 생각해봅시다. 이 때 물체의 종류는 3개로, (2L, 3kg), (3L, 4kg), (4L, 8kg)의 속성을 가지고 있으면 2L와 3L의 물체 두 개를 선택하면 부피를 꽉 채우게 되지만, 무게는 7kg로, 마지막 4L짜리 1개를 선택하는 것보다 작습니다. 이러한 상황이 여기에서도 발생합니다.

추가적으로 각 음식 선택의 weight를 반영할 수 있습니다. 우리는 떡볶이를 표준 기준을 바탕으로 1인분을 먹을 수도 있지만, 0.5인분을 먹고 다른 것을 더 먹을 수도 있습니다. 즉, 우리가 섭취하는 식단은 음식의 선형결합으로 생각해볼 수 있는 것입니다.

결국 최적화된 해를 찾게 되면, 아래와 같은 식으로 구성될 것입니다. (간단한 예입니다.)

<오늘의 추천 식단>
아침 = (사과 50g, 시리얼 100g, 우유 100g)
점심 = (쌀밥 200g , 미역국 150g, …)
간식 = (없음)

어떠한 영역이든 머신러닝이나 인공지능의 기법을 적용하기 위해서는, 우선 어떠한 정보를 활용할 수 있으며, 이러한 정보를 잘 이용할 수 있도록 구성하는 온톨로지(ontology)의 영역이 기본적으로 중요합니다. 이를 지식기반 인공지능(knowledge-based AI)이라고 부르기도 합니다. 정보를 구성함에 있어서, 영역 지식 혹은 영역지식의 전문가들의 의견이 반영됩니다.

다음 편에서는 이러한 정보를 바탕으로 어떻게 복잡한 문제를 구성하고, 최적의 식단을 찾아나가게 될지, 그리고 최적을 찾는 알고리즘에 따른 식단 구성의 차이는 어떻게 변화할지 살펴보도록 하겠습니다.

예를 들어 유전 알고리즘(genetic algorithm)을 통해, 각 해의 국소 최적해(local optimum)을 찾아다니는 경우도 존재하고, 사례기반추론(Case-based Reasoning)과 새로운 사례에 대한 적응(Adaptation )을 통해 새로운 해를 도출하는 방법도 존재합니다.

요약

  1. 식단 구성의 문제에 대해 인공지능을 적용하기 위해서는, 우선 최적화 관점으로 살펴볼 필요가 있다.
  2. 식단에 대한 정보를 실제로 알고리즘이 사용할 수 있도록 가공하기 위해서는, 영역 지식과 저장된 구조가 중요하다.

참고문헌
[1] Khan AS, Hoffmann A. , Building a case-based diet recommendation system without a knowledge engineer, Artif Intell Med. 2003 Feb;27(2):155-79.
[2] Gaál B, Vassányi I, Kozmann G. , A novel artificial intelligence method for weekly dietary menu planning. , Methods Inf Med. 2005;44(5):655-64.
[3] Johan Aberg, Dealing with Malnutrition: A Meal Planning System for Elderly, AAAI Spring Symposium: Argumentation for Consumers of Healthcare, 2006

Note: 오늘 사용된 이미지는 셔터스톡에서 구매한 이미지 입니다.


M-SHAPE 배너.png
투명배경.png

전문가들이 직접 쓰는 최초의 STEEM 의학 매거진]

https://mediteam.us

  • Tag
  • 0
  • 0
  • View@Mediteam.us 211
Prev Article : [Mathematical Model, Epidemiology] 전염병의 전파와 … Next Article : [AI in meal planning] 식단 추천 알고리즘에서 최…
Comments :: Steem 에서 댓글 달기
Prev Article : [Mathematical Model, Epidemiology] 전염병의 전파와 … Next Article : [AI in meal planning] 식단 추천 알고리즘에서 최…