Я пробовал делать агента, который на вопрос пользователя генерирует врачей разных специальностей, каждый врач "читает" вопрос и медицинскую информацию, делает выводы, затем врачи обсуждают друг с другом вопрос в рамках консилиума и делают структурированный ответ. Ну, получается чуть получше - да. Токенов уходит в 3 - 4 раза больше, также, как и времени на генерацию. Ответы все равно такие, что проще зайти в Google и самому найти.
Кстати, в вашей статье справедливо указано на то, что ИИ генерации получаются очень общими. Я думаю, это связано с цензурированием моделей. Если попробуете сравнить генерации официальных нейронок с аблитерированными, вторые сильно выигрывают в медицинской тематике. Собственно, из-за этого и заморачиваюсь с файнтюнингом
Интересное решение. Модель пока очень сырая, поэтому я не рекомендую использовать её для такой цели. Проблема тут в референсных значениях, которые могут отличаться у некоторых показателей в зависимости от единиц измерения. Большие коммерческие модели могут "понять" эти показатели правильно, а у малых моделей имеется высокий риск галлюцинаций. Думаю, что по анализам пока лучше использовать сторонние api
Хотя, вероятность пишет, но это все пока просто "вода".
Расчет вероятности
1. Аппендицит:
Факторы в пользу: Боль внизу живота, усиливающаяся при пальпации, напряжении мышц и припухлости в правой подвздошной области - типичные симптомы аппендицита.
Факторы против: Утолщение стенок кишечника с жидкостью может указывать на более хроническую проблему, чем острый воспалительный процесс, характерный для аппендицита.
Оценка вероятности: 70%
2. Спаечная непроходимость:
Факторы в пользу: Утолщение стенок кишечника с жидкостью может быть связано с сужением или спазмом в просвете кишечника, что характерно для спаечной непроходимости.
Факторы против: Обычно при спаечной непроходимости наблюдается более выраженное уплотнение стенки из-за рубцовой ткани и закупорки, а не просто жидкость с отеком в подвздошной области.
Оценка вероятности: 20%
3. Дивертикулит:
Факторы в пользу: Боль в правом нижнем квадранте, напряженность мышц и припухлость могут быть связаны с воспалением дивертикула.
Факторы против: Выпот жидкости указывает на более хроническую проблему, чем острый дивертикулит.
Оценка вероятности: 10%
4. Язвенная болезнь желудка:
Факторы в пользу: Наличие СОЭ и сдвига лейкоцитарной формулы может указывать на язву желудка, которая может вызывать боль в животе и осложнения, такие как перфорация или абсцесс.
Факторы против: Отсутствие других типичных симптомов язвы желудка (например, изжога, кровотечение).
Размер датасета 47.451 rows на русском языке. Метод обучения Continued Pretraining не предполагает разделения на признаки и таргеты. Данные для обучения представляют собой простые абзацы.
Вся соль в том, что такой простой метод обучения дает результат лучше, чем SFTTraining. По крайней мере, качество, гибкость и следование инструкциям мне показалось намного лучше.
Пример записи: {'input': 'У пациента наблюдаются лихорадка, кашель с мокротой и потеря веса. В анамнезе трижды прерванное лечение туберкулеза в прошлом. Подозревается туберкулез с множественной лекарственной устойчивостью. Как диагностируется туберкулез с множественной лекарственной устойчивостью? \nA. Устойчив к ИПР + Рифампицину + Амикацину\nB. Устойчив к ИПР + Амикацину + Офлоксацину + Этамбутолу\nC. Устойчив к ИПР + Рифампицину + Амикацину + Офлоксацину\nD. Устойчив к Рифампицину + Амикацину + Офлоксацину',
'output': '## Thinking\nРассмотрим определение XDR-TB. XDR-TB - это форма туберкулеза, устойчивая не только к стандартным препаратам, но и к более широкому спектру антибиотиков. \n\nПервостепенное значение имеют устойчивость к изониазиду (INH) и рифампицину, которые являются краеугольными препаратами в лечении туберкулеза. Однако это не всё. XDR-TB также характеризуется устойчивостью к хотя бы одному фторхинолону, например, офлоксацину. Фторхинолоны играют ключевую роль в лечении туберкулеза, устойчивого к основным препаратам. \n\nВажно отметить, что XDR-TB включает устойчивость к одному из инъекционных препаратов второй линии. К ним относятся амикацин, канамицин или капреомицин, которые являются резервным арсеналом при неэффективности первой линии лечения.\n\nТеперь проанализируем варианты:\n\n* Вариант A: содержит INH, рифампицин и амикацин, но отсутствует фторхинолон - это исключает его как XDR-TB.\n* Вариант B: включает INH, амикацин, офлоксацин и этамбутол. Фторхинолон присутствует, но нет рифампицина - это также не соответствует определению XDR-TB.\n* Вариант C: содержит INH, рифампицин, амикацин и офлоксацин. Этот вариант полностью соответствует всем критериям XDR-TB: оба основных препарата первой линии, фторхинолон и инъекционный препарат второй линии.\n\n* Вариант D: включает рифампицин, амикацин и офлоксацин, но отсутствует INH - это исключает его как XDR-TB, так как устойчивость к INH является обязательным условием.\n\n\nТаким образом, единственный вариант, отвечающий всем требованиям для определения XDR-TB, - это вариант C\n## Final Response\nОпределение мультиустойчивого туберкулеза (XDR-TB) — это туберкулез, который демонстрирует устойчивость как минимум к изониазиду (INH) и рифампицину (два противотуберкулезных препарата первой линии), как минимум к одному фторхинолону (например, офлоксацину) и как минимум к одному из инъекционных препаратов второй линии (например, амикацину, канамицину или капреомицину). \n\nИсходя из этого определения, правильным выбором является: C. Устойчив к INH + рифампицину + амикацину + офлоксацину. Этот вариант включает устойчивость к обоим основным препаратам (INH и рифампицину), фторхинолону (офлоксацину) и инъекционному препарату второй линии (амикацину), что соответствует критериям XDR-TB. \n\n\n\n'}
Датастет содержит в основном ситуационные задачи с размышлениями и ответами. Поле ## Thinking отвечает за размышления, поле ## Final Response за ответ.
Вероятность определяет некорректно: либо модель небольшая, либо нужно дополнять датасет.
Разумеется, модель не подходит для принятия медицинских решений. Тем более, что она двух-миллиардная. Но статьи на Pubmed разбирает на русском неплохо. Пока очень плохо знает фармакологию, потому что датасет был в основном по ситуационным задачам.
В случае такой простой задачи, как корректировка пола - дело вкуса. Но иногда без регулярных выражений не обойтись. Например, у нас столбец с разнородными названиями препаратов. Там встречаются как коммерческие названия, так и МНН, плюс в некоторые названия случайно вписаны дозировки: ['Анафранил', 'risperidone', 'галоперидол, 5 мг, таблетки', 'Сероквель(quetiapine).,25mg', 'Габапентин, капсулы']. Нам надо разделить эти данные на признаки: русское название, МНН, дозировка (если чего-то нет, то оставить ячейку пустой). Без регулярок у нас может получиться слишком большая функция. Тут для поиска всех русских названий, кроме тех, которые содержат таб и капс, используем выражение: \b(?!таб*|капс*)[А-Яа-я]*\b Для латинских: \b[A-Za-z]*\b Для дозировок: \d*\s*(mg|мг)
Про отзывы я честно не знаю. Принимаю пациентов и дежурю только в одном месте. В двух других работаю врачом-консультантом. Найти хороших врачей сложно. Я сам боюсь обращаться за помощью даже по знакомству(
Спасибо за комплимент). Я пользователь: опыта работы нет, библиотек не писал, заказы не делал и не делаю (разве что по статистике, но это другое). Сайт-визитку на Булме могу, конечно состряпать, но времени на это нет.
Он вас будет спрашивать: - Каких котят? Конкретной породы или всех подряд? - Своих продаете или маркетплейс? А, может просто соскрапим объявления Авито? - Где будем хостить?
- Кому будете продавать и за какую цену? - Как там с рекламой? Сами делаем или заказываем?
У нас наоборот было. Первый курс проходили всякую хрень, включая историю. Потом со 2 курса драли в 3 шкуры по клиническим дисциплинам: анатомия, латинский, биохимия, гистология. На третьем после двух сессий (у нас сильно требовали топографическую анатомию, патанатомию, пропедевтику, общую хирургию, акушерство, фарму) процентов 10 или 20 отчислили. После 3-го курса уже расслабились. Работали на скорой фельдшерами по 1-2 раза в неделю (чаще по субботам, но иногда надо было выходить еще и в будни). Все хотели быть хирургами, а в итоге кто-то вообще ушел из медицины, кто пошёл терапевтом на участок и т.д. Проблемы начинаются уже после медвуза, когда тебе должно повезти в выборе правильного места для ординатуры. Если не повезло, то ты приходишь в больницу, где никому ты на хрен не нужен и целыми днями просиживаешь в ординаторской. Если учреждение хорошее и там выяполняется учебный план, тебя определяют к врачу, с которым ты вместе ведешь пациентов, регулярно (обычно раз в 1-2 недели) проводятся клинические разборы. Правда, даже после этого где-то год на дежурствах не чувствуешь себя уверенно в разных ситуациях.
Иногда мамы надеются, что дочь/сын найдет себе в ВУЗе мужа/жену, и не понимают, что ребенок не хочет учиться именно по этой специальности.
Я регулярно пользуюсь perplexity.ai. Там генеративная модель, которая парсит сайты. Очень удобна для работы. Иногда - gptchat3 и yandexgpt. Изредка - question-answering BERT модели для контекстного поиска по собственному корпусу текстов. Пробовал запускать LLAMA на своём компе локально (квантифицированную) и на runpod уже нормальную, правда скромную по размерам (float32 7B) модель. Gptchat4 пока не юзал, потому что не могу оплатить подписку даже через виртуальную карту( Пока, самый удобный сервис - это perplexity.ai, потому что в отличии от других моделей он парсит реальные сайты и выдаёт структурированный результат со ссылками на источники. Попробуйте сами.
Интересно, конечно, как-нибудь арендовать одну-две A100 и запустить на ней какую-нибудь большую нецензурированную модель типо WizardLM-13B-Uncensored-GGUF или Llama2chat 70b
У Питона главное преимущество - большое количество готовых библиотек буквально для любой задачи. На нем хоть статистику считай, хоть изображения обрабатывай. Времени для изучения чего-то узкоспециализированного, к сожалению, вообще нет.
С читаемостью кода стало полегче после изучения ООП. Теперь, хотя бы, не приходится по 10 раз переназначать одну и ту же переменную в разных местах и переписывать уже готовые функции. Но разобраться с этим подходом было довольно сложно.
Я пробовал делать агента, который на вопрос пользователя генерирует врачей разных специальностей, каждый врач "читает" вопрос и медицинскую информацию, делает выводы, затем врачи обсуждают друг с другом вопрос в рамках консилиума и делают структурированный ответ. Ну, получается чуть получше - да. Токенов уходит в 3 - 4 раза больше, также, как и времени на генерацию. Ответы все равно такие, что проще зайти в Google и самому найти.
Кстати, в вашей статье справедливо указано на то, что ИИ генерации получаются очень общими. Я думаю, это связано с цензурированием моделей. Если попробуете сравнить генерации официальных нейронок с аблитерированными, вторые сильно выигрывают в медицинской тематике. Собственно, из-за этого и заморачиваюсь с файнтюнингом
Интересное решение. Модель пока очень сырая, поэтому я не рекомендую использовать её для такой цели. Проблема тут в референсных значениях, которые могут отличаться у некоторых показателей в зависимости от единиц измерения. Большие коммерческие модели могут "понять" эти показатели правильно, а у малых моделей имеется высокий риск галлюцинаций. Думаю, что по анализам пока лучше использовать сторонние api
Не понял вопрос...
Хотя, вероятность пишет, но это все пока просто "вода".
Расчет вероятности
1. Аппендицит:
Факторы в пользу: Боль внизу живота, усиливающаяся при пальпации, напряжении мышц и припухлости в правой подвздошной области - типичные симптомы аппендицита.
Факторы против: Утолщение стенок кишечника с жидкостью может указывать на более хроническую проблему, чем острый воспалительный процесс, характерный для аппендицита.
Оценка вероятности: 70%
2. Спаечная непроходимость:
Факторы в пользу: Утолщение стенок кишечника с жидкостью может быть связано с сужением или спазмом в просвете кишечника, что характерно для спаечной непроходимости.
Факторы против: Обычно при спаечной непроходимости наблюдается более выраженное уплотнение стенки из-за рубцовой ткани и закупорки, а не просто жидкость с отеком в подвздошной области.
Оценка вероятности: 20%
3. Дивертикулит:
Факторы в пользу: Боль в правом нижнем квадранте, напряженность мышц и припухлость могут быть связаны с воспалением дивертикула.
Факторы против: Выпот жидкости указывает на более хроническую проблему, чем острый дивертикулит.
Оценка вероятности: 10%
4. Язвенная болезнь желудка:
Факторы в пользу: Наличие СОЭ и сдвига лейкоцитарной формулы может указывать на язву желудка, которая может вызывать боль в животе и осложнения, такие как перфорация или абсцесс.
Факторы против: Отсутствие других типичных симптомов язвы желудка (например, изжога, кровотечение).
Оценка вероятности: 5%
Размер датасета 47.451 rows на русском языке. Метод обучения Continued Pretraining не предполагает разделения на признаки и таргеты. Данные для обучения представляют собой простые абзацы.
Вся соль в том, что такой простой метод обучения дает результат лучше, чем SFTTraining. По крайней мере, качество, гибкость и следование инструкциям мне показалось намного лучше.
Пример записи:
{'input': 'У пациента наблюдаются лихорадка, кашель с мокротой и потеря веса. В анамнезе трижды прерванное лечение туберкулеза в прошлом. Подозревается туберкулез с множественной лекарственной устойчивостью. Как диагностируется туберкулез с множественной лекарственной устойчивостью? \nA. Устойчив к ИПР + Рифампицину + Амикацину\nB. Устойчив к ИПР + Амикацину + Офлоксацину + Этамбутолу\nC. Устойчив к ИПР + Рифампицину + Амикацину + Офлоксацину\nD. Устойчив к Рифампицину + Амикацину + Офлоксацину', 'output': '## Thinking\nРассмотрим определение XDR-TB. XDR-TB - это форма туберкулеза, устойчивая не только к стандартным препаратам, но и к более широкому спектру антибиотиков. \n\nПервостепенное значение имеют устойчивость к изониазиду (INH) и рифампицину, которые являются краеугольными препаратами в лечении туберкулеза. Однако это не всё. XDR-TB также характеризуется устойчивостью к хотя бы одному фторхинолону, например, офлоксацину. Фторхинолоны играют ключевую роль в лечении туберкулеза, устойчивого к основным препаратам. \n\nВажно отметить, что XDR-TB включает устойчивость к одному из инъекционных препаратов второй линии. К ним относятся амикацин, канамицин или капреомицин, которые являются резервным арсеналом при неэффективности первой линии лечения.\n\nТеперь проанализируем варианты:\n\n* Вариант A: содержит INH, рифампицин и амикацин, но отсутствует фторхинолон - это исключает его как XDR-TB.\n* Вариант B: включает INH, амикацин, офлоксацин и этамбутол. Фторхинолон присутствует, но нет рифампицина - это также не соответствует определению XDR-TB.\n* Вариант C: содержит INH, рифампицин, амикацин и офлоксацин. Этот вариант полностью соответствует всем критериям XDR-TB: оба основных препарата первой линии, фторхинолон и инъекционный препарат второй линии.\n\n* Вариант D: включает рифампицин, амикацин и офлоксацин, но отсутствует INH - это исключает его как XDR-TB, так как устойчивость к INH является обязательным условием.\n\n\nТаким образом, единственный вариант, отвечающий всем требованиям для определения XDR-TB, - это вариант C\n## Final Response\nОпределение мультиустойчивого туберкулеза (XDR-TB) — это туберкулез, который демонстрирует устойчивость как минимум к изониазиду (INH) и рифампицину (два противотуберкулезных препарата первой линии), как минимум к одному фторхинолону (например, офлоксацину) и как минимум к одному из инъекционных препаратов второй линии (например, амикацину, канамицину или капреомицину). \n\nИсходя из этого определения, правильным выбором является: C. Устойчив к INH + рифампицину + амикацину + офлоксацину. Этот вариант включает устойчивость к обоим основным препаратам (INH и рифампицину), фторхинолону (офлоксацину) и инъекционному препарату второй линии (амикацину), что соответствует критериям XDR-TB. \n\n\n\n'}
Датастет содержит в основном ситуационные задачи с размышлениями и ответами. Поле ## Thinking отвечает за размышления, поле ## Final Response за ответ.
Вероятность определяет некорректно: либо модель небольшая, либо нужно дополнять датасет.
Посмотрите здесь: https://huggingface.co/FreedomIntelligence
Подход брал у них, но пробую экспериментировать с разметкой
Разумеется, модель не подходит для принятия медицинских решений. Тем более, что она двух-миллиардная. Но статьи на Pubmed разбирает на русском неплохо.
Пока очень плохо знает фармакологию, потому что датасет был в основном по ситуационным задачам.
В случае такой простой задачи, как корректировка пола - дело вкуса. Но иногда без регулярных выражений не обойтись. Например, у нас столбец с разнородными названиями препаратов. Там встречаются как коммерческие названия, так и МНН, плюс в некоторые названия случайно вписаны дозировки: ['Анафранил', 'risperidone', 'галоперидол, 5 мг, таблетки', 'Сероквель(quetiapine).,25mg', 'Габапентин, капсулы']. Нам надо разделить эти данные на признаки: русское название, МНН, дозировка (если чего-то нет, то оставить ячейку пустой). Без регулярок у нас может получиться слишком большая функция.
Тут для поиска всех русских названий, кроме тех, которые содержат таб и капс, используем выражение: \b(?!таб*|капс*)[А-Яа-я]*\b
Для латинских: \b[A-Za-z]*\b
Для дозировок: \d*\s*(mg|мг)
Про отзывы я честно не знаю. Принимаю пациентов и дежурю только в одном месте. В двух других работаю врачом-консультантом. Найти хороших врачей сложно. Я сам боюсь обращаться за помощью даже по знакомству(
Спасибо за комплимент). Я пользователь: опыта работы нет, библиотек не писал, заказы не делал и не делаю (разве что по статистике, но это другое). Сайт-визитку на Булме могу, конечно состряпать, но времени на это нет.
Он вас будет спрашивать:
- Каких котят? Конкретной породы или всех подряд?
- Своих продаете или маркетплейс? А, может просто соскрапим объявления Авито?
- Где будем хостить?
- Кому будете продавать и за какую цену?
- Как там с рекламой? Сами делаем или заказываем?
и т.д.
У нас наоборот было. Первый курс проходили всякую хрень, включая историю. Потом со 2 курса драли в 3 шкуры по клиническим дисциплинам: анатомия, латинский, биохимия, гистология. На третьем после двух сессий (у нас сильно требовали топографическую анатомию, патанатомию, пропедевтику, общую хирургию, акушерство, фарму) процентов 10 или 20 отчислили. После 3-го курса уже расслабились. Работали на скорой фельдшерами по 1-2 раза в неделю (чаще по субботам, но иногда надо было выходить еще и в будни). Все хотели быть хирургами, а в итоге кто-то вообще ушел из медицины, кто пошёл терапевтом на участок и т.д. Проблемы начинаются уже после медвуза, когда тебе должно повезти в выборе правильного места для ординатуры. Если не повезло, то ты приходишь в больницу, где никому ты на хрен не нужен и целыми днями просиживаешь в ординаторской. Если учреждение хорошее и там выяполняется учебный план, тебя определяют к врачу, с которым ты вместе ведешь пациентов, регулярно (обычно раз в 1-2 недели) проводятся клинические разборы. Правда, даже после этого где-то год на дежурствах не чувствуешь себя уверенно в разных ситуациях.
Иногда мамы надеются, что дочь/сын найдет себе в ВУЗе мужа/жену, и не понимают, что ребенок не хочет учиться именно по этой специальности.
Я регулярно пользуюсь perplexity.ai. Там генеративная модель, которая парсит сайты. Очень удобна для работы. Иногда - gptchat3 и yandexgpt. Изредка - question-answering BERT модели для контекстного поиска по собственному корпусу текстов. Пробовал запускать LLAMA на своём компе локально (квантифицированную) и на runpod уже нормальную, правда скромную по размерам (float32 7B) модель. Gptchat4 пока не юзал, потому что не могу оплатить подписку даже через виртуальную карту( Пока, самый удобный сервис - это perplexity.ai, потому что в отличии от других моделей он парсит реальные сайты и выдаёт структурированный результат со ссылками на источники. Попробуйте сами.
Интересно, конечно, как-нибудь арендовать одну-две A100 и запустить на ней какую-нибудь большую нецензурированную модель типо WizardLM-13B-Uncensored-GGUF или Llama2chat 70b
Занимаюсь, чтобы не выгореть. Не люблю однообразия. Да и на работе от такого хобби есть польза)
Вы правы: если их труд станет дешевле, меньше людей будет учиться на программистов, их станет меньше и спрос вырастет)
А у меня в детстве был Ленинград-1 (советский клон ZxSpectrum). До сих пор угараю под этот звук: https://m.youtube.com/watch?time_continue=120&v=2rqxz23IxRY&embeds_referring_euri=https%3A%2F%2Fwww.google.com%2F&source_ve_path=Mjg2NjY&feature=emb_logo
У Питона главное преимущество - большое количество готовых библиотек буквально для любой задачи. На нем хоть статистику считай, хоть изображения обрабатывай. Времени для изучения чего-то узкоспециализированного, к сожалению, вообще нет.
С читаемостью кода стало полегче после изучения ООП. Теперь, хотя бы, не приходится по 10 раз переназначать одну и ту же переменную в разных местах и переписывать уже готовые функции. Но разобраться с этим подходом было довольно сложно.
Возможно, в далёком будущем хорошо пойдут биотехнологические специальности. Там поле непаханое. Но это моё мнение.
Заголовок старался как можно скромнее делать =)
Особенно согласен с тем, что людям сложно сформулировать то, что они хотят. Эта проблема буквально везде.